zoukankan      html  css  js  c++  java
  • 前端实践项目(二)webpack生成html和外部引用

    目录

      该系列的总目录, https://www.cnblogs.com/shadoll/p/14637373.html

    一.说明  

      上一篇文章介绍了怎么创建前端项目并用webpack进行打包。前端实践项目(一),创建项目,并使用webpack进行打包编译

      本文会介绍如何构建一个前端项目(指基本的html、css、js,打包后可以直接部署看到结果),具体会运用到webpack来生成html文件和引用外部插件。

    二.创建html

      首先,在app文件夹中,创建一个index.ejs,这个是什么格式不重要,它只是最终打包出html的一个模板。

    <!DOCTYPE html>
    <!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
    <!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
    <!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
    <!--[if gt IE 8]><!-->
    <html class="no-js">
    <!--<![endif]-->
    
    <head>
        <title>testProject</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="format-detection" content="telephone=no">
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable = no" />
    </head>
    
    <body>
        <!--[if lt IE 8]>
            <p class="chromeframe">网站不支持ie7及版本低于ie7的浏览器,请换其它浏览器打开网站。</p>
        <![endif]-->
        <div id="test">test</div>
        <script type="text/javascript" src="./lib/jquery/dist/jquery.min.js"></script>
    </body>
    
    </html>

      执行命令,安装插件。webpack打包html的插件。

    cnpm install html-webpack-plugin@3.2.0 --save-dev

      修改webpack.config.js配置。意思是,根据模板去生成html文件,目标路径之前在output已经配置。

    //引用插件
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    
    //插件项
    plugins: [
        new HtmlWebpackPlugin({
            template: __dirname + '/app/index.ejs',
            filename: 'index.html',
            inject: true,
            hash: true,
            chunks: ['index']
        })
    ],

    三.引用外部插件

      webpack进行打包,对应的入口文件及其引用的文件都会编译在一个js或css文件中,我们的html只需要引用这打包后的文件即可。

      如果我们的html需要引用一些插件,而这些插件又不需要打包,比如Jquery,那该如何处理。

      这种情况中,我们可以通过webpack来直接将其拷贝到打包文件中。

      执行命令,安装插件。webpack用于拷贝文件的插件。

    cnpm install copy-webpack-plugin@4.0.1 --save-dev

      在app文件下的lib添加一个jquery.js。修改webpack.config.js配置,

    //引用插件
    
      const CopyWebpackPlugin = require("copy-webpack-plugin");
    //插件项
    plugins: [
        new CopyWebpackPlugin([{
            from: __dirname + '/app/lib',
            to: __dirname + '/dist/lib'
        }])
    ]

       然后在html上直接引用该jquery.js。注意该地址引用是要根据打包后文件路径来判断的。

    <script type="text/javascript" src="./lib/jquery/dist/jquery.min.js"></script>

      修改webpack.config.js配置。由于该jquery是外部引用,在webpack中是找不到该jquery对象,使用时会出现编译错误,所以可以通过配置来将外部对象设置为可以内部使用的引用。

    externals: {
        'jquery': 'jQuery'
    },

    四.准备运行  

      在index.js上使用jquery方法。

    const $ = require('jquery');
    
    var type = 1;
    
    $("#test").click(function () {
        if (type == 1) {
            $("#test").html("233");
            type = 2;
        }
        else if (type == 2) {
            $("#test").html("test");
            type = 1;
        }
    });

      执行命令webpack进行编译。在生成的dist文件夹中,看到js、css打包到一个文件上。外部引用也拷贝过去。根目录下也生成一个index.html,生成html过程中,会自动加入编译后的js、css引用,路径是根据webpack.config.js的output配置来决定。publicPath为“/”,指部署环境下的根目录。可以改为“./”,为该html文件的相对路径。

    //入口文件输出配置
    output: {
        path: __dirname + '/dist',
        filename: 'js/[name].js',
        publicPath: '/'
    },
    
    //生成后html自动插入的引用
    <script type="text/javascript" src="/js/index.js?dab3f463afae1ec2e337"></script></body>

      部署该项目或直接打开html,点击文字就可以看到该点击事件生效了。

  • 相关阅读:
    使用Stream流递归 组合树形结构
    MySQL 8 通用表表达式
    sa-token 权限认证
    先更新缓存还是先更新数据库?
    钉钉 回调事件 消息加解密
    commons-io
    stream和parallelstream的区别
    消除if...else
    springboot 扩展xml请求和响应
    springboot admin 邮箱
  • 原文地址:https://www.cnblogs.com/shadoll/p/14628207.html
Copyright © 2011-2022 走看看