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

2020-12-13  本文已影响0人  MISS_3ca2
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>
上一篇下一篇

猜你喜欢

热点阅读