美文网首页
ejs 高效的嵌入式 JavaScript 模板引擎。

ejs 高效的嵌入式 JavaScript 模板引擎。

作者: MISS_3ca2 | 来源:发表于2020-12-13 15:16 被阅读0次
    image.png

    需求是界面需要做国际化要求兼容ie8 刚开始的处理方式是js获取语言参数后把对应的语言插入到节点中 节点默认是空的没有默认的语言 这样导致页面会有一瞬间是空白的 之后优化界面拆分开 每个语言对应一个界面 ejs就能通过配置实现一个模板编译出不同的语言界面

    首先yarn init初始化package.json 然后安装需要用到的插件

    {
      "name": "ejs",
      "version": "1.0.0",
      "main": "index.js",
      "license": "MIT",
      "scripts": {
        "build": "webpack --config webpack.config.js"
      },
      "dependencies": {
        "clean-webpack-plugin": "^3.0.0",
        "ejs": "^3.1.5",
        "html-loader": "^1.3.2",
        "html-webpack-plugin": "^4.5.0",
        "webpack": "^5.10.1",
        "webpack-bundle-analyzer": "^4.2.0",
        "webpack-cli": "^4.2.0"
      }
    }
    
    

    配置webpack.config.js

    const path = require('path')
    const { CleanWebpackPlugin } = require('clean-webpack-plugin')
    const HtmlWebpackPlugin = require('html-webpack-plugin')
    
    
    module.exports = {
        entry: {
          main: './index.js'
        },
        output: {
            path: path.resolve(__dirname, 'dist'), // 打包文件的输出目录
            filename: '[name].bundle.js', // 代码打包后的文件名
            publicPath: './', // 引用的路径或者 CDN 地址
            chunkFilename: '[name].js' // 代码拆分后的文件名
        },
        module: {
            rules: [{
              test: /\.html$/,
              use: [{
                loader: 'html-loader'
              }]
            }]
        },
        plugins: [
            new CleanWebpackPlugin(), // 会删除上次构建的文件,然后重新构建
            new HtmlWebpackPlugin({
              // 打包输出HTML
              title: '自动生成 HTML',
              minify: {
                // 压缩 HTML 文件
                removeComments: true, // 移除 HTML 中的注释
                collapseWhitespace: true, // 删除空白符与换行符
                minifyCSS: true // 压缩内联 css
              },
              filename: 'index.html', // 生成后的文件名
              template: path.resolve(__dirname, 'index.ejs'), // 根据此模版生成 HTML 文件
              chunks: ['main'] // entry中的 main 入口才会被打包
            })
        ]
    }
    

    创建ejs的文件 <%=htmlWebpackPlugin.options.title%>读取HtmlWebpackPlugin配置的信息

    <!DOCTYPE html>
    <html lang="en">
        <% var data={
            title : "测试",
             
        }%>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>ejs測試</title>
    </head>
    <body>
        <h1><%=data.title%></h1>
    </body>
    </html>
    

    执行yan build就会打包输出对应的html文件啦

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width,initial-scale=1">
        <title>ejs測試</title>
    </head>
    
    <body>
        <h1>测试</h1>
        <script src="./main.bundle.js"></script>
    </body>
    
    </html>
    

    相关文章

      网友评论

          本文标题:ejs 高效的嵌入式 JavaScript 模板引擎。

          本文链接:https://www.haomeiwen.com/subject/vdwhgktx.html