webpack4搭建详解——SME-Router

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webpack4搭建详解——SME-Router相关的知识,希望对你有一定的参考价值。

webpack基础配置

注意新的webpack 5在2020年10月发布,但是企业应用比较少因此我们使用webpack4
打包,懒加载,服务代理

打包

将es6转化为es5,使用了babel插件,压缩合并,压缩
建立一个client项目:
初始化npm init -y

配置package.json

脚本执行命令行配置执行压缩使用webpack打包使用:
那么多文件的连锁引入就可以压缩为一个引入了。

"dev": "webpack",
"start": "webpack-dev-server"
开发依赖:
"devDependencies": 
        "webpack": "^4.46.0",/* 版本 */
        "webpack-cli": "^3.3.12",/* 版本启动命令  */
        "html-webpack-plugin": "^4.5.2",/* 注入插入插件 */
        "webpack-dev-server": "^3.11.3",/* 通过这个服务打开目标文件index.html */
        "clean-webpack-plugin": "^3.0.0",/* 用于清除因配置hash名而产生上次生成的同样文件 */
        "copy-webpack-plugin": "^6.4.1"/* webpage拷贝插件 */
		"style-loader": "^1.3.0",/* css载入js */
        "css-loader": "^5.0.2",/* css载入js */
        "sass-loader": "^7.2.0",/* 这三个是针对sass载入js */
	    "sass": "^1.22.10",
	    "node-sass": "^5.0.0",
	    "sme-router": "^0.12.8",/* 前端路由渲染 */
	    "art-template-loader": "^1.4.3",/*前端渲染模板,需要用到这两个*/
	    "art-template": "^4.13.2"
,

建立webpack.config.js

详解插件的使用以及注释

var path = require("path");
var HtmlWebpackPlugin = require("html-webpack-plugin")/* 引入注入插件 */
var CleanWebpackPlugin = require("clean-webpack-plugin")/* 删除原来数据hash文件名的插件 */
var CopyWebpackPlugin = require("copy-webpack-plugin");/* 将项目需要的css等copy到打包文件夹下 */
module.exports = 
    mode:"development",/* 开发模式 */
    devtool: "source-map",/* 映射文件(可以找报错) */
    // entry:"./src/app.js",/* 入口 */
    entry:
        "js/app":"./src/app.js"/* 前(保存在什么路径下)<——后(源文件地址):src下面的app.js压缩后放在./distjs/[js/app]-[hash:6].js*/
    ,
    output:/* 输出 */
        path:path.join(path.resolve(),"./dist"),/* 自动生成打包后文件的目录下 */
        filename:"[name]-[hash:6].js"/*[根据原来的js名字换成最后生成的js名称][根据当前的毫秒数生成6位的字符串] 修改后改名 */
        // filename:"app-[hash:6].js"/*[根据当前的毫秒数生成6位的字符串] 修改后改名 */
    ,
    plugins: [
        new HtmlWebpackPlugin(/* 注入 */
            template:path.join(path.resolve(),"public/html/index.html"),/* 需要注入网页源目录 */
            app:"index.html",/* 目标文件名 并且放在了dist这个目录下*/
            inject:true,/* 表示注入  */
        ),
        new CopyWebpackPlugin(/* 项目使用的一些css样式等拷贝到这个项目下 */
            patterns:[
                /* 把这个路径下的css复制到打包的项目底下去 */
                 "from":path.join(path.resolve(),"./public/css"), "to": path.join(path.resolve(), "./dist/css/") ,
                /*  配置art-template-loader模块,用于加载所有.art的文件并且根据需求加载完成后解析 */
                "from":path.join(path.resolve(),"./public/html"), "to": path.join(path.resolve(), "./dist/html/") ,

            
            ]
        ),
        new CleanWebpackPlugin(),/* 删除因为hash产生的上次文件名 */
    ],
    module:/* 载入模块配置,在生成js的阶段就可以载入 */
        rules:[
            /* 在遇到什么什么时就可以载入,并且使用什么插件来解决 */
             /* 使用 */
            test:/\\.art$/i,use:loader:"art-template-loader",
            test:/\\.s[ca]ss$/i,use:["style-loader","css-loader",/* 在遇到后缀名为css或者sass的时候,使用这两个顺序的插件 */
                loader: "sass-loader",/* 针对sass的一些配置对象 */
                options: 
                    implementation: require("sass"),
                ,
            ]
        ]
    ,
    devServer:
        contentBase:path.join(path.resolve(),'./dist'),/* 环境基础,指的是这个文件下的执行这个index.html文件 */
        port:3500,/* 没写的话默认服务器端口 */
        proxy:/* 设置网路通信代理,自己设置跨域问题,首先访问自己的服务代理IP和端口号 */
            "/a":/* 请求的路径开始的第一位是/a,辨识代理路由 */
                target:"http://localhost:4005",/* 然后代理去访问真正目标的端口号 */
                pathRewrite:"^/a":""/* 覆盖这个字段 */
            
        
    


SME-Router

这是一款纯js轻量级前端路由
下载

npm i sme-router -S

基础

使用smeRouter必须依赖于webpack,先通过webpack配好整个结构再开始继续使用

  • 跳转页面
  • 历史记录

/router/index.js文件

import Router from "sme-router";
var app=new Router("app");//这个app就是div的id,渲染的就是指定的id的div盒子里的内容
app.route("/index/",function(req,res,next)
    res.render(“index”);
)
app.route("/a",function(req,res,next)
    res.render("a");
)
app.route("/b",function(req,res,next)
    res.render("b");
)
export default app;

app.js文件

import app  from "./router/index";
app.go("/b");
app.go("/"+txt+"/1?a=1&b=2",a:10,b:20);
++++++++++++++++++++++++++++
伪代码:
++++++++++++++++++++++++++++
import aTemplate from "../views/a.art";/*渲染模板*/
app.route("/index/:a",function(req,res,next)
    console.log(req.body);//go的第二个参数传出
    console.log(req.query);//地址中search部分
    console.log(req.params);//路由中/:a 这个位置值

    res.render(aTemplate(list:[1,2,3,4,5]));/*这里的aTemplate是一个函数,返回渲染好的模板*/
)

以上是关于webpack4搭建详解——SME-Router的主要内容,如果未能解决你的问题,请参考以下文章

webpack4.0搭建vue教程

webpack4配置详解之常用插件分享

webpack4配置详解之常用插件分享

webpack系列从零搭建 webpack4+react 脚手架

深入浅出的webpack构建工具--webpack4+vue搭建环境 (十三)

webpack4.x配置详解,多页面,多入口,多出口,新特性新坑!!