三、自动化生成项目中的html页面

 1. 现在项目下已经有了初始页面,页面引用的是bundle.js,但是我们打包后的文件名是不确定的(带hash等),有什么办法能自动改变路径?借助插件;

 2. 安装npm install html-webpack-plugin –save-dev;

 3. 配置文件中引用

  官网=>using Plugins

  

  初始化插件,运行 npm run webpack ;发现插件生效;生成了html文件,并且对两个js进行了引用;但是这个跟我们根目录下的html文件没有什么关系,或者说怎样以根目录下的html为模板来生成这个html?

 4. 给插件传参;传一个模板;

   

  路径:为什么能确定这个index.html是模板html => 上下文概念;在配置里有一个context属性(默认根目录)

  在运行npm run webpack ;发现生成的html具有模板的内容,还引入了打包生成的文件;试着改变模板;运行npm run webpack;生成的html也改变了。

 5. 现在有一个问题?生成的所有文件都在同一个文件夹,不符合开发模式

  

       因为我们output 的path 就是指向同一个文件夹;修改path

      

6.html-webpack-plugin的其他参数

      

7.怎样在配置文件传参,然后在模板引用;

  使用js模板语言=> ejs语法 <%= htmlWebpackPlugin.options.title %>

   

  

  Npm run webpack;

     是否任何一个变量都能传到页面呢?

      

  

  Npm run webpack

   

       这样我们可以很轻松的配置我们的模板,得到我们想要的html;

  我们究竟能够从htmlWebpackPlugin上取到哪些信息呢?

  对htmlWebpackPlugin进行一个遍历:

  1).先遍历key

   

  打包后得key值:

   

  2).分别遍历key值

   

  打包;

   

  

  打开https://www.npmjs.com/package/html-webpack-plugin

  可以看见参数的详细解释;

  通过这些可以控制输出的html的内容;

 

  --比如我们想把一部分js放在head里,一部分放在body里;只通过配置是做不到的,要改变模板;因为模板可以直接引用打包后的信息;

   

  在配置中 将inject:false ;

  打包;

 

  -- 再比如我们项目要上线,上线后地址跟我们本地的相对路径肯定不一样,借助新属性:pubicPath (上线后地址)

   

  打包后就是线上地址

   

 

  --项目上线html压缩,minify

  https://github.com/kangax/html-minifier#options-quick-reference

  

  删除注释;删除空格;

  打包;

 

8. 之前我们提到的都是单页面应用,现在我们看下多页面应用:

         1). entry可以传一个对象,可以用它还处理多页面应用;

         2). 多页面需要多个html, plugins是一个数组,可以继续调用一次插件htmlWebpackPlugin

                   --添加多页面入口:

       

      --在scripts文件夹下增加a.js  b.js  c.js;让entry跟script文件夹下是一一对应的;

       

      --增加chunk(页面插件)的调用;

       

      运行;这时发现三个页面的内容除了title不一样  ,其他内容都一样;引用相同的js(因为模板是这么设置的);怎样让三个页面引用各自的js呢?

      n  htmlWebpackPlugin提供了一个参数chunks

      chunks: Allows you to add only some chunks (e.g. only the unit-test chunk),允许添加一些对自己有用的chunk

       

      将模板html指定引入的js去掉;

      运行;

      这时每个页面都引入自己需要的js ,生成的html文件和我们的入口文件的chunk一一对应上了;

      htmlWebpackPlugin提供了还提供了另外一个参数excludeChunks  排除法

      excludeChunks: Allows you to skip some chunks (e.g. don't add the unit-test chunk) 除了那些chunk被排除之外;其他的chunk都被引入进来;

       

      这样可以自由的匹配每个页面需要的chunk和要排除的chunk

 

  3).如果我们想提高性能,比如把一些初始化的脚本直接嵌入到页面;减少http请求;提高脚本的运行速度;开始webpack并没有这个功能,后来有人在githup上不断地提这个需求:

         https://github.com/jantimon/html-webpack-plugin

        

  

  Compilation:webpack自身暴露出来的 ,给我们使用的一个引用;

  Assets:打包以后生成的文件的对象;通过文件名的路径进这个对象中,可以拿到这个文件的索引

  source():拿到js文件的内容;

 

  上次演示过在模板中取chunk文件路径(带publicPath):

   

  但是 compilation.assets的key文件名并不是带publicPath,所以要把entry里的publicPath过滤掉;

   

  使用拿到publicPath的长度;

  运行;

  这时得到啦不带publicPath的路径

  

  然后使用官方给的方法:

   

  运行;
  (如果报错)检查下:出错,entry未定义,原因是每个都需要引入main.js文件

   

  运行;

  Main里面的内容已经被插入到script标签来啦;但是chunk中mian的 src也被插入进来;修改模板和参数:

   

  运行;ok!

转载于:https://www.cnblogs.com/mbyund/p/6782657.html

前端工程化是指通过使用一系列的工具、技术和方法,对前端开发进行规范和自动化的过程。前端工程化的目标是提高开发效率、代码质量和团队协作能力。 在前端工程化自动化生成Vue页面是一项重要的任务。通过使用一些工具和技术,可以方便地创建和管理Vue页面。 首先,我们可以使用脚手架工具(如Vue CLI)来快速生成Vue项目的基础结构和配置文件。脚手架工具可以为我们提供一个规范的项目结构,包括组织代码的目录结构、配置构建工具和开发服务器等。 其次,我们可以使用模板引擎(如Pug或EJS)来定义Vue页面的布局和结构。模板引擎可以帮助我们编写更简洁、可复用的HTML代码,并支持动态渲染数据。通过在模板引用Vue组件并传递参数,我们可以动态地生成不同的页面。 另外,我们可以使用自动化构建工具(如Webpack或Rollup)来自动处理、优化和打包Vue页面的资源。自动化构建工具可以帮助我们自动加载和压缩CSS、JavaScript和图片等资源,并且可以根据不同的构建环境生成相应的代码。 最后,我们可以使用版本控制系统(如Git)来管理并跟踪Vue页面的代码变更。通过版本控制系统,我们可以方便地进行代码协作、分支管理和代码回滚等操作,提高团队协作效率。 总之,通过前端工程化和自动生成Vue页面,我们可以提高前端开发的效率和质量,同时改善团队协作和版本控制。这些工具和技术的结合,使得前端开发更加便捷和高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值