2026/1/1 20:22:44
网站建设
项目流程
网站中捕获鼠标位置,wordpress editor ios,网站建设需要哪些必备文件,昆明网站建设优化技术1、webpack的作用是什么#xff0c;谈谈你对它的理解#xff1f;
现在的前端网页功能丰富#xff0c;特别是SPA#xff08;single page web application 单页应用#xff09;技术流行后#xff0c;JavaScript的复杂度增加和需要一大堆依赖包#xff0c;还需要解决Scss谈谈你对它的理解现在的前端网页功能丰富特别是SPAsingle page web application 单页应用技术流行后JavaScript的复杂度增加和需要一大堆依赖包还需要解决ScssLess……新增样式的扩展写法的编译工作。所以现代化的前端已经完全依赖于webpack的辅助了。现在最流行的三个前端框架可以说和webpack已经紧密相连框架官方都推出了和自身框架依赖的webpack构建工具。react.jsWebPackvue.jsWebPackAngluarJSWebPack2、webpack的工作原理?WebPack可以看做是模块打包机它做的事情是分析你的项目结构找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言SassTypeScript等并将其转换和打包为合适的格式供浏览器使用。在3.0出现后Webpack还肩负起了优化项目的责任。3、webpack打包原理把一切都视为模块不管是 css、JS、Image 还是 html 都可以互相引用通过定义 entry.js对所有依赖的文件进行跟踪将各个模块通过 loader 和 plugins 处理然后打包在一起。按需加载打包过程中 Webpack 通过 Code Splitting 功能将文件分为多个 chunks还可以将重复的部分单独提取出来作为 commonChunk从而实现按需加载。把所有依赖打包成一个 bundle.js 文件通过代码分割成单元片段并按需加载4、webpack的核心概念Entry入口Webpack 执行构建的第一步将从 Entry 开始可抽象成输入。告诉webpack要使用哪个模块作为构建项目的起点默认为./src/index.jsoutput 出口告诉webpack在哪里输出它打包好的代码以及如何命名默认为./distModule模块在 Webpack 里一切皆模块一个模块对应着一个文件。Webpack 会从配置的 Entry 开始递归找出所有依赖的模块。Chunk代码块一个 Chunk 由多个模块组合而成用于代码合并与分割。Loader模块转换器用于把模块原内容按照需求转换成新内容。Plugin扩展插件在 Webpack 构建流程中的特定时机会广播出对应的事件插件可以监听这些事件的发生在特定时机做对应的事情。5、Webpack的基本功能有哪些代码转换TypeScript 编译成 JavaScript、SCSS 编译成 CSS 等等文件优化压缩 JavaScript、CSS、html 代码压缩合并图片等代码分割提取多个页面的公共代码、提取首屏不需要执行部分的代码让其异步加载模块合并在采用模块化的项目有很多模块和文件需要构建功能把模块分类合并成一个文件自动刷新监听本地源代码的变化自动构建刷新浏览器代码校验在代码被提交到仓库前需要检测代码是否符合规范以及单元测试是否通过自动发布更新完代码后自动构建出线上发布代码并传输给发布系统。6、gulp/grunt 与 webpack的区别是什么?三者都是前端构建工具grunt和gulp在早期比较流行现在webpack相对来说比较主流不过一些轻量化的任务还是会用gulp来处理比如单独打包CSS文件等。grunt和gulp是基于任务和流Task、Stream的。类似jQuery找到一个或一类文件对其做一系列链式操作更新流上的数据 整条链式操作构成了一个任务多个任务就构成了整个web的构建流程。webpack是基于入口的。webpack会自动地递归解析入口所需要加载的所有资源文件然后用不同的Loader来处理不同的文件用Plugin来扩展webpack功能。7、webpack是解决什么问题而生的?如果像以前开发时一个html文件可能会引用十几个js文件,而且顺序还不能乱因为它们存在依赖关系同时对于ES6等新的语法less, sass等CSS预处理都不能很好的解决……此时就需要一个处理这些问题的工具。8、你是如何提高webpack构件速度的?多入口情况下使用CommonsChunkPlugin来提取公共代码通过externals配置来提取常用库利用DllPlugin和DllReferencePlugin预编译资源模块通过DllPlugin来对那些我们引用但是绝对不会修改的npm包来进行预编译再通过DllReferencePlugin将预编译的模块加载进来。使用Happypack 实现多线程加速编译使用webpack-uglify-paralle来提升uglifyPlugin的压缩速度。原理上webpack-uglify-parallel采用了多核并行压缩来提升压缩速度使用Tree-shaking和Scope Hoisting来剔除多余代码9、npm打包时需要注意哪些如何利用webpack来更好的构建Npm是目前最大的 JavaScript 模块仓库里面有来自全世界开发者上传的可复用模块。你可能只是JS模块的使用者但是有些情况你也会去选择上传自己开发的模块。关于NPM模块上传的方法可以去官网上进行学习这里只讲解如何利用webpack来构建。NPM模块需要注意以下问题要支持CommonJS模块化规范所以要求打包后的最后结果也遵守该规则。Npm模块使用者的环境是不确定的很有可能并不支持ES6所以打包的最后结果应该是采用ES5编写的。并且如果ES5是经过转换的请最好连同SourceMap一同上传。Npm包大小应该是尽量小有些仓库会限制包大小发布的模块不能将依赖的模块也一同打包应该让用户选择性的去自行安装。这样可以避免模块应用者再次打包时出现底层模块被重复打包的情况。UI组件类的模块应该将依赖的其它资源文件例如.css文件也需要包含在发布的模块里。10、前端为什么要进行打包和构建代码层面体积更小Tree-shaking、压缩、合并加载更快编译高级语言和语法TS、ES6、模块化、scss兼容性和错误检查polyfill,postcss,eslint研发流程层面统一、高效的开发环境统一的构建流程和产出标准集成公司构建规范提测、上线11、webpack的构建流程是什么?从读取配置到输出文件这个过程尽量说全。Webpack 的运行流程是一个串行的过程从启动到结束会依次执行以下流程初始化参数从配置文件和 Shell 语句中读取与合并参数得出最终的参数开始编译用上一步得到的参数初始化 Compiler 对象加载所有配置的插件执行对象的 run 方法开始执行编译确定入口根据配置中的 entry 找出所有的入口文件编译模块从入口文件出发调用所有配置的 Loader 对模块进行翻译再找出该模块依赖的模块再递归本步骤直到所有入口依赖的文件都经过了本步骤的处理完成模块编译在经过第4步使用 Loader 翻译完所有模块后得到了每个模块被翻译后的最终内容以及它们之间的依赖关系输出资源根据入口和模块之间的依赖关系组装成一个个包含多个模块的 Chunk再把每个 Chunk 转换成一个单独的文件加入到输出列表这步是可以修改输出内容的最后机会输出完成在确定好输出内容后根据配置确定输出的路径和文件名把文件内容写入到文件系统。在以上过程中Webpack 会在特定的时间点广播出特定的事件插件在监听到感兴趣的事件后会执行特定的逻辑并且插件可以调用 Webpack 提供的 API 改变 Webpack 的运行结果。12、怎么配置单页应用怎么配置多页应用单页应用可以理解为webpack的标准模式直接在entry中指定单页应用的入口即可这里不再赘述多页应用的话可以使用webpack的 AutoWebPlugin来完成简单自动化的构建但是前提是项目的目录结构必须遵守他预设的规范。多页应用中要注意的是每个页面都有公共的代码可以将这些代码抽离出来避免重复的加载。比如每个页面都引用了同一套css样式表随着业务的不断扩展页面可能会不断的追加所以一定要让入口的配置足够灵活避免每次添加新页面还需要修改构建配置13、Loader机制的作用是什么webpack默认只能打包js文件配置里的module.rules数组配置了一组规则告诉 Webpack 在遇到哪些文件时使用哪些 Loader 去加载和转换打包成js。注意use属性的值需要是一个由 Loader 名称组成的数组Loader 的执行顺序是由后到前的每一个 Loader 都可以通过 URL querystring 的方式传入参数例如css-loader?minimize中的minimize告诉css-loader要开启 CSS 压缩。14、常用loadercss-loader读取 合并CSS 文件style-loader把 CSS 内容注入到 JavaScript 里sass-loader 解析sass文件安装sass-loadernode-sasspostcss-loader自动添加浏览器兼容前缀postcss.config配置url-loader将文件转换为base64 URI。vue-loader处理vue文件。15、Plugin插件的作用是什么Plugin 是用来扩展 Webpack 功能的通过在构建流程里注入钩子实现它给 Webpack 带来了很大的灵活性。Webpack 是通过plugins属性来配置需要使用的插件列表的。plugins属性是一个数组里面的每一项都是插件的一个实例在实例化一个组件时可以通过构造函数传入这个组件支持的配置属性。16、什么是bundle什么是chunk什么是modulebundle是由webpack打包出来的文件chunk是指webpack在进行模块依赖分析的时候代码分割出来的代码块module是开发中的单个模块17、常见PluginsHtmlWbpackPlugin自动在打包结束后生成html文件并引入bundle.jscleanwebPackPlugin打包自动删除上次打包文件18、ExtractTextPlugin插件的作用ExtractTextPlugin插件的作用是提取出 JavaScript 代码里的 CSS 到一个单独的文件。对此你可以通过插件的filename属性告诉插件输出的 CSS 文件名称是通过[name]_[contenthash:8].css字符串模版生成的里面的[name]代表文件名称[contenthash:8]代表根据文件内容算出的8位 hash 值 还有很多配置选项可以在ExtractTextPlugin的主页上查到。19、sourceMap是一个映射关系将打包后的文件隐射到源代码用于定位报错位置配置方式:例如devtool‘source-map’加不同前缀意义inline:不生成映射关系文件打包进main.jscheap: 1.只精确到行不精确到列打包速度快 2.只管业务代码不管第三方模块module不仅管业务代码而且管第三方代码eval:执行效率最快性能最好最佳实践开发环境cheap-module-eval-source-map线上环境cheap-mudole-source-map20、HMR热模块更新借助webpack.HotModuleReplacementPlugin()devServer开启hot场景1实现只刷新css不影响js场景2js中实现热更新只更新指定js模块if (module.hot) { module.hot.accept(’./library.js’, function() { // Do something with the updated library module… });}21、webpack如何配置多入口文件?entry: { home: resolve(__dirname, src/home/index.js), about: resolve(__dirname, src/about/index.js)}用于描述入口的对象。你可以使用如下属性dependOn: 当前入口所依赖的入口。它们必须在该入口被加载前被加载。filename: 指定要输出的文件名称。import: 启动时需加载的模块。library: 指定 library 选项为当前 entry 构建一个 library。runtime: 运行时 chunk 的名字。如果设置了就会创建一个新的运行时 chunk。在 webpack 5.43.0 之后可将其设为 false 以避免一个新的运行时 chunk。publicPath: 当该入口的输出文件在浏览器中被引用时为它们指定一个公共 URL 地址22、babel 相关: polyfill 以及 runtime 区别 ES stage 含义preset–env 作用等等1.polyfill 以及 runtime 区别babel-polyfill 的原理是当运行环境中并没有实现的一些方法babel-polyfill会做兼容。babel-runtime 它是将es6编译成es5去执行。我们使用es6的语法来编写最终会通过babel-runtime编译成es5.也就是说不管浏览器是否支持ES6只要是ES6的语法它都会进行转码成ES5.所以就有很多冗余的代码。babel-polyfill 它是通过向全局对象和内置对象的prototype上添加方法来实现的。比如运行环境中不支持Array.prototype.find 方法引入polyfill, 我们就可以使用es6方法来编写了但是缺点就是会造成全局空间污染。babel-runtime: 它不会污染全局对象和内置对象的原型比如说我们需要Promise我们只需要import Promise from babel-runtime/core-js/promise’即可这样不仅避免污染全局对象而且可以减少不必要的代码。2.stage-x指处于某一阶段的js语言提案Stage 0 - 设想Strawman只是一个想法可能有 Babel插件。Stage 1 - 建议Proposal这是值得跟进的。Stage 2 - 草案Draft初始规范。Stage 3 - 候选Candidate完成规范并在浏览器上初步实现。Stage 4 - 完成Finished将添加到下一个年度版本发布中。3. 理解 babel-preset-envbabel-preset-es2015: 可以将es6的代码编译成es5.babel-preset-es2016: 可以将es7的代码编译为es6.babel-preset-es2017: 可以将es8的代码编译为es7.babel-preset-latest: 支持现有所有ECMAScript版本的新特性23、什么是模热更新有什么优点模块热更新是webpack的一个功能它可以使得代码修改之后不用刷新浏览器就可以更新。在应用过程中替换添加删出模块无需重新加载整个页面是高级版的自动刷新浏览器。优点只更新变更内容以节省宝贵的开发时间。调整样式更加快速几乎相当于在浏览器中更改样式24、lazy loading模块懒加载借助import()语法异步引入组件实现文件懒加载prefetch,preloadingwebpack提倡多写异步代码提升代码利用率从而提升页面性能先加载主业务文件prefetch利用网络空闲时间异步加载组件import(/* webpackPrefetch: true / ‘LoginModal’);preload和主业务文件一起加载异步加载组件import(/ webpackPreload: true */ ‘ChartingLibrary’);25、什么是长缓存在webpack中如何做到长缓存优化浏览器在用户访问页面的时候为了加快加载速度会对用户访问的静态资源进行存储但是每一次代码升级或者更新都需要浏览器去下载新的代码最方便和最简单的更新方式就是引入新的文件名称。在webpack中可以在output给出输出的文件制定chunkhash并且分离经常更新的代码和框架代码通过NameModulesPlugin或者HashedModulesPlugin使再次打包文件名不变。26、什么是Tree-sharking?指打包中去除那些引入了但在代码中没用到的死代码。在wepack中js treeshaking通过UglifyJsPlugin来进行css中通过purify-CSS来进行。27、webpack-dev-server 和 http服务器的区别webpack-dev-server使用内存来存储webpack开发环境下的打包文件并且可以使用模块热更新比传统的http服务对开发更加有效。28、webpack3和webpack4的区别mode/–mode参数新增了mode/–mode参数来表示是开发还是生产development/productionproduction 侧重于打包后的文件大小development侧重于goujiansud移除loaders必须使用rules在3版本的时候loaders和rules 是共存的但是到4的时候只允许使用rules移除了CommonsChunkPlugin (提取公共代码)用optimization.splitChunks和optimization.runtimeChunk来代替支持es6的方式导入JSON文件并且可以过滤无用的代码2025开年AI技术打得火热正在改变前端人的职业命运阿里云核心业务全部接入Agent体系字节跳动30%前端岗位要求大模型开发能力腾讯、京东、百度开放招聘技术岗80%与AI相关……大模型正在重构技术开发范式传统CRUD开发模式正在被AI原生应用取代最残忍的是业务面临转型领导要求用RAG优化知识库检索你不会带AI团队微调大模型要准备多少数据你不懂想转型大模型应用开发工程师等相关岗没项目实操经验……这不是技术焦虑而是职业生存危机曾经React、Vue等热门的开发框架已不再是就业的金钥匙。如果认为会调用API就是懂大模型、能进行二次开发那就大错特错了。制造、医疗、金融等各行业都在加速AI应用落地未来企业更看重能用AI大模型技术重构业务流的技术人。如今技术圈降薪裁员频频爆发传统岗位大批缩水相反AI相关技术岗疯狂扩招薪资逆势上涨150%大厂老板们甚至开出70-100W年薪挖掘AI大模型人才不出1年 “有AI项目开发经验”或将成为前端人投递简历的门槛。风口之下与其像“温水煮青蛙”一样坐等被行业淘汰不如先人一步掌握AI大模型原理应用技术项目实操经验“顺风”翻盘大模型目前在人工智能领域可以说正处于一种“炙手可热”的状态吸引了很多人的关注和兴趣也有很多新人小白想要学习入门大模型那么如何入门大模型呢下面给大家分享一份2025最新版的大模型学习路线帮助新人小白更系统、更快速的学习大模型2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享**一、2025最新大模型学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛没有明确的学习路线可能会导致新人感到迷茫不知道应该专注于哪些内容。我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:AI大模型时代的华丽登场L1阶段我们会去了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理关键技术以及大模型应用场景通过理论原理结合多个项目实战从提示工程基础到提示工程进阶掌握Prompt提示工程。L2级别AI大模型RAG应用开发工程L2阶段是我们的AI大模型RAG应用开发工程我们会去学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3级别大模型Agent应用架构进阶实践L3阶段大模型Agent应用架构进阶实现我们会去学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造我们自己的Agent智能体同时还可以学习到包括Coze、Dify在内的可视化工具的使用。L4级别大模型微调与私有化部署L4阶段大模型的微调和私有化部署我们会更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握而L3 L4更多的是通过项目实战来掌握大模型的应用开发针对以上大模型的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF三、大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。四、大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。因篇幅有限仅展示部分资料需要点击下方链接即可前往获取2025最新版CSDN大礼包《AGI大模型学习资源包》免费分享