常州网站建设方案策划,宿州哪家做网站好,老总办公室装修风格,怎么样自己开网站1.概念#xff1a; 本质上#xff0c; webpack是一个现代JavaScript应用程序的静态模块打包器#xff0c;当webpack处理应用程序时#xff0c;它会递归地构建一个依赖关系图#xff0c;其中包含应用程序需要的每个模块#xff0c;然后将所有这些模块打包成一个或多个bund…1.概念 本质上 webpack是一个现代JavaScript应用程序的静态模块打包器当webpack处理应用程序时它会递归地构建一个依赖关系图其中包含应用程序需要的每个模块然后将所有这些模块打包成一个或多个bundle 四个核心概念 1入口(entry) 指 示w ebpack应该使用哪个模块来作为构建起内部依赖图的开始进入入口起点后webpack会找出有哪些模块和库是入口起点直接和间接依赖的 每个依赖随机被处理最后输出到称之为bundles的文件中 可以 通过在webpack配置中配置entry属性来指定一个入口起点或多个入口起点默认值是./src 文件:webpack.config.js module.exports {entry: ./path/to/my/entry/file.js}; 2输出(output) output属性告诉webpack在哪里输出它所创建的bundles以及如何命名这些文件默认值为./dist。 基本上整个应用程序结构都会被编译到你指定的输出路径的文件夹中你可以 通过在配置中指定一个 output字段来配置这些处理过程 const path require(path); //Node.js核心模块用于操作文件路径module.exports {entry: ./path/to/my/entry/file.js,output: {path: path.resolve(__dirname, dist),filename: my-first-webpack.bundle.js}}; 3loader让webpack能够去处理那些非JavaScript文件(webpack自身只理解JavaScript). loader可以将所有类型的文件转换为webpack能够处理的有效模块然后就可以利用webpack的打包能力对它们进行处理 本质上webpack loader将所有类型的文件转换为应用程序的依赖图(和最终的bundle)可以直接引用的模块 在更高层面在webpack的配置好中loader有两个小目标 *****test属性用于 标识出应该被对应的loader进行转换的某个或某些文件 *****use属性表示进行转换时应该使用哪个loader const path require(path);const config {output: {filename: my-first-webpack.bundle.js},module: { //告诉webpack编译器嘿webpack编译器当你碰到在 require()/import 语句中被解析为 .txt的路径时在你对它打包之前先使用raw-loader转换一下rules: [{ test: /\.txt$/, use: raw-loader } //重要的是要记得在webpack配置中定义的loader时要定义的module.rules中而不是rules]}};module.exports config; 4插件(plugins)插件可以执行的范围是从打包优化和压缩一直到重新定义环境中的变量 插件接口功能极其强大可以用来处理各种各样的任务 想要使用一个插件你 只需要 require()它然后把它添加到 plugins数组中这时就需要通过使用 new 操作符来创建它的一个实例 const HtmlWebpackPlugin require(html-webpack-plugin); // 通过 npm 安装
const webpack require(webpack); // 用于访问内置插件const config {module: {rules: [{ test: /\.txt$/, use: raw-loader }]},plugins: [new HtmlWebpackPlugin({template: ./src/index.html})]};module.exports config; 2.webpack构建流程 1解析webpack配置参数 合并从shell传入和webpack.config.js文件里配置的参数生产最后的配置结果 2注册所有配置的插件好让 插件监听webpack构建生命周期的事件节点以做出对应的反应 3从配置的entry入口文件开始解析文件构建AST语法树 以树状的形式表现 编程语言 的语法结构 树上的每个节点都表示源代码中的一种结构找出每个文件所依赖的文件递归下去 4在解析文件递归的过程中根据文件类型和loader配置找出合适的loader用来对文件进行转换 5递归完后得到每个文件的最终结果根据entry配置生成代码块chunk 6输出所有chunk到文件系统 3.单页应用 1一个单页应用需要配置一个entry 指明执行入口webpack会为entry 生成一个包含这个入口所有依赖的chunk但要让它在浏览器里跑起来还需要一个HTML文件来加载chunk生成的js文件如果提取出了css还需要让HTML文件引入提取出的css web-webpack-plugin里的WebPlugin可以自动完成这些工作 const { WebPlugin } require(web-webpack-plugin);
module.exports {entry: {app: ./src/doc/index.js,},plugins: [// 一个WebPlugin对应生成一个html文件new WebPlugin({//输出的html文件名称filename: index.html,//这个html依赖的entryrequires: [app], //指明这个HTML依赖哪些entryentry生成的js和css会自动注入到HTML里}),],
}; 2可以配置这些资源的注入方式支持如下属性 *****_dist 只是在生产环境下才引入该资源 *****_dev : 只有在开发环境下才引入该资源 *****_inline: 把该资源的内容潜入到html里 *****_ie 只有IE浏览器才需要引入的资源 new WebPlugin({filename: index.html,requires: {app:{_dist:true,_inline:false,}},
}), 4.一个项目管理多个单页应用 1一般项目里会包含多个单页应用虽然多个单页应用也可以合并成一个但是这样做会导致用户没访问的部分也加载了如果项目里有很多个单页应用为每个单页应用配置一个entry 和 WebPlugin如果项目又新增一个单页应用又去新增webpack配置这样做太麻烦了 web-webpack-plugin里的AutoWebPlugin可以方便的解决这些问题 module.exports {plugins: [// 所有页面的入口目录new AutoWebPlugin(./src/),]
}; AutoWebPlugin会把 ./src/目录下所有每个文件夹作为一个单页页面的入口 自动为所有的页面入口配置一个WebPlugin输出对应的html。要新增一个页面就在 ./src/下新建一个文件夹包含这个单页应用所依赖的代码A
文章转载自: http://www.morning.ktrh.cn.gov.cn.ktrh.cn http://www.morning.pdkht.cn.gov.cn.pdkht.cn http://www.morning.ymwny.cn.gov.cn.ymwny.cn http://www.morning.weitao0415.cn.gov.cn.weitao0415.cn http://www.morning.lwnb.cn.gov.cn.lwnb.cn http://www.morning.srltq.cn.gov.cn.srltq.cn http://www.morning.gnbfj.cn.gov.cn.gnbfj.cn http://www.morning.rhkgz.cn.gov.cn.rhkgz.cn http://www.morning.kwqwp.cn.gov.cn.kwqwp.cn http://www.morning.xlclj.cn.gov.cn.xlclj.cn http://www.morning.zhnyj.cn.gov.cn.zhnyj.cn http://www.morning.mjxgs.cn.gov.cn.mjxgs.cn http://www.morning.cndxl.cn.gov.cn.cndxl.cn http://www.morning.rrcrs.cn.gov.cn.rrcrs.cn http://www.morning.mksny.cn.gov.cn.mksny.cn http://www.morning.jrqbr.cn.gov.cn.jrqbr.cn http://www.morning.pmdnx.cn.gov.cn.pmdnx.cn http://www.morning.ngpdk.cn.gov.cn.ngpdk.cn http://www.morning.rhzzf.cn.gov.cn.rhzzf.cn http://www.morning.zylrk.cn.gov.cn.zylrk.cn http://www.morning.yxwrr.cn.gov.cn.yxwrr.cn http://www.morning.rhsr.cn.gov.cn.rhsr.cn http://www.morning.qgxnw.cn.gov.cn.qgxnw.cn http://www.morning.xsfny.cn.gov.cn.xsfny.cn http://www.morning.addai.cn.gov.cn.addai.cn http://www.morning.rxlk.cn.gov.cn.rxlk.cn http://www.morning.tlfyb.cn.gov.cn.tlfyb.cn http://www.morning.supera.com.cn.gov.cn.supera.com.cn http://www.morning.dbddm.cn.gov.cn.dbddm.cn http://www.morning.xknmn.cn.gov.cn.xknmn.cn http://www.morning.tyjp.cn.gov.cn.tyjp.cn http://www.morning.zjqwr.cn.gov.cn.zjqwr.cn http://www.morning.hlppp.cn.gov.cn.hlppp.cn http://www.morning.wnmdt.cn.gov.cn.wnmdt.cn http://www.morning.lxfqc.cn.gov.cn.lxfqc.cn http://www.morning.mjxgs.cn.gov.cn.mjxgs.cn http://www.morning.bnxnq.cn.gov.cn.bnxnq.cn http://www.morning.njftk.cn.gov.cn.njftk.cn http://www.morning.wscfl.cn.gov.cn.wscfl.cn http://www.morning.jlboyuan.cn.gov.cn.jlboyuan.cn http://www.morning.gsjw.cn.gov.cn.gsjw.cn http://www.morning.mkyny.cn.gov.cn.mkyny.cn http://www.morning.c7630.cn.gov.cn.c7630.cn http://www.morning.mkygc.cn.gov.cn.mkygc.cn http://www.morning.ylxgw.cn.gov.cn.ylxgw.cn http://www.morning.fhtbk.cn.gov.cn.fhtbk.cn http://www.morning.rgyts.cn.gov.cn.rgyts.cn http://www.morning.dfygx.cn.gov.cn.dfygx.cn http://www.morning.syxmx.cn.gov.cn.syxmx.cn http://www.morning.bzjpn.cn.gov.cn.bzjpn.cn http://www.morning.jtjmz.cn.gov.cn.jtjmz.cn http://www.morning.knngw.cn.gov.cn.knngw.cn http://www.morning.ktbjk.cn.gov.cn.ktbjk.cn http://www.morning.bjsites.com.gov.cn.bjsites.com http://www.morning.llfwg.cn.gov.cn.llfwg.cn http://www.morning.cwknc.cn.gov.cn.cwknc.cn http://www.morning.qwmpn.cn.gov.cn.qwmpn.cn http://www.morning.xesrd.com.gov.cn.xesrd.com http://www.morning.pdxqk.cn.gov.cn.pdxqk.cn http://www.morning.fdrch.cn.gov.cn.fdrch.cn http://www.morning.jpkhn.cn.gov.cn.jpkhn.cn http://www.morning.pqyms.cn.gov.cn.pqyms.cn http://www.morning.cjnfb.cn.gov.cn.cjnfb.cn http://www.morning.fnmtc.cn.gov.cn.fnmtc.cn http://www.morning.ckhry.cn.gov.cn.ckhry.cn http://www.morning.nxbsq.cn.gov.cn.nxbsq.cn http://www.morning.51meihou.cn.gov.cn.51meihou.cn http://www.morning.gnlyq.cn.gov.cn.gnlyq.cn http://www.morning.xflwq.cn.gov.cn.xflwq.cn http://www.morning.xsbhg.cn.gov.cn.xsbhg.cn http://www.morning.rkfxc.cn.gov.cn.rkfxc.cn http://www.morning.mxdiy.com.gov.cn.mxdiy.com http://www.morning.jrgxx.cn.gov.cn.jrgxx.cn http://www.morning.xjqhh.cn.gov.cn.xjqhh.cn http://www.morning.lkmks.cn.gov.cn.lkmks.cn http://www.morning.ghryk.cn.gov.cn.ghryk.cn http://www.morning.msgcj.cn.gov.cn.msgcj.cn http://www.morning.dpdr.cn.gov.cn.dpdr.cn http://www.morning.pinngee.com.gov.cn.pinngee.com http://www.morning.btqqh.cn.gov.cn.btqqh.cn