博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
客服系统从Require.js到Webpack
阅读量:7260 次
发布时间:2019-06-29

本文共 2468 字,大约阅读时间需要 8 分钟。

客服系统之前都是用Require.js 2.2.0进行模块化编程,并使用相应的r.js打包js文件,本次迁移成Webpack3.3.0。

为什么迁移

项目前期,require.js可以很好的解决需求,但是随着项目成长到具有上百个JS文件,越来越多的工作需要处理。除了组件化开发、打包发布,还有性能优化、工程化管理需要考虑,而require.js并不擅长做这些事情,如tree shaking, hot reloading, code splitting等。

令一方面现有项目的CSS打包、CSS预处理、文件合并等自动化构建也需要借助gulp或者shell脚本等工具实现,而这些工作,使用更先进生产力的webpack就可以全部完成。

Require.js写法

首先需要了解使用require.js的js文件的写法,baseUrl是默认路径,paths中定义了各个路径的别名,然后使用标准的AMD语法引用定义过的模块。

requirejs.config({    //设定为git repo的dev路径;    baseUrl: "../../../",    paths: {        test: "js/module/test",        main : "js/module/main",        model : "js/model",        view : "js/view",        api : "js/model",        artTemplate: "js/3rdParty/artTemplate",        util: "js/util",        // "bootstrap" : "http://boss.static.xiaomi.net/common/bootstrap/3.3.4-fix/bootstrap",        "bootstrap" : "js/3rdParty/bootstrap/3.3.4-fix/bootstrap",        "jquery" : "http://boss.static.xiaomi.net/common/jquery/1.11.2/jquery",        "jquery.validate" : "http://boss.static.xiaomi.net/common/jquery.validate/1.13.1/jquery.validate"    }});// 注意:// require选定某一个模块的baseUrl,是基于git repo的dev路径的;require(['jquery', 'bootstrap', 'main/_main'], function( $, bt, _main ){    _main.run();});

开始迁移

Webpack本身是支持Amd的,所以不需要修改各个js组件的语法,只需要修改对应入口文件的require.js的配置即可。

修改后如下:

import _main from 'main/_main';_main.run();

相应的paths对应到了webpack中的resolve中:

resolve: {  extensions: [' ', '.js', '.css'],  modules: [path.join(__dirname, 'dev/')],  alias: {    test: path.join(__dirname, 'dev/js/module/test'),    main: path.join(__dirname, 'dev/js/module/main'),    libs : path.join(__dirname, "dev/js/3rdParty"),    model: path.join(__dirname, 'dev/js/model'),    view: path.join(__dirname, 'dev/js/view'),    api: path.join(__dirname, 'dev/js/model'),    artTemplate: path.join(__dirname, 'dev/js/3rdParty/artTemplate'),    util: path.join(__dirname, 'dev/js/util'),    jquery: path.join(__dirname, 'dev/js/3rdParty/jquery/1.11.2/jquery'),    bootstrap: path.join(__dirname, 'dev/js/3rdParty/bootstrap/3.3.4-fix/bootstrap'),    'jquery.validate': path.join(__dirname, 'dev/js/3rdParty/jquery.validate/1.13.1/jquery.validate'),    'datatables.css': path.join(__dirname,'dev/css/3rdparty_libs/datatables/1.10.13/dataTables.bootstrap'),  },}

项目中有大量依赖jQuery的第三方库,所以需要把jQuery暴露到全局中

{  test: /jquery.js/,  use: [{    loader: 'expose-loader',      options: '$'  },  {    loader: 'expose-loader',    options: 'jQuery'  }]},

总结

项目使用webpack替换掉原有繁杂的shell脚本打包文件,移除require.js,取得了很好的效果,且方便日常维护扩展。

转载地址:http://uokdm.baihongyu.com/

你可能感兴趣的文章
微信小程序组件minui在mac系统的使用注意事项
查看>>
用cxf生成webservice的java客户端代码
查看>>
sql存储过程中的整形变量和字符串变量
查看>>
WebService 调用三种方法
查看>>
自定义web框架
查看>>
java集合架构(二)——Map
查看>>
课堂实验
查看>>
The King’s Ups and Downs
查看>>
Python 隔离沙箱 virtualenv
查看>>
JRadioButton 实现图片切换
查看>>
图片和字符串相互转换
查看>>
动态规划,Dijkstra算法,A*算法的比较
查看>>
[笔记]sql server 单用户切换
查看>>
ios专题 - 图片(UIImage)获取方法
查看>>
iOS应用性能调优的25个建议和技巧
查看>>
LINUX常用命令--基础篇(一)
查看>>
JS查询class的名称
查看>>
web框架
查看>>
Tomcat访问日志详细配置
查看>>
栈溢出防御——windows安全机制GS编译选项
查看>>