全国咨询热线:18720358503

如何开发微信小程序_webpack打包nodejs项意图方法

类别:媒体报道 发布时间:2021-01-08 浏览人次:

webpack打包nodejs项目的方法       这篇文章主要介绍了webpack打包nodejs项目,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

适用情况

首先说明,此情况不具备普遍性。若你的情况与笔者类似那么希望这篇文章能够帮到你。

我的项目情况是这样的:用node.js做后台,ejs做模板引擎(即整个页面是一个ejs文件)由node.js将数据渲染完成后,再将完整页面返回给用户。

那么这样做会遇到的问题:

1. 本项目没有html页面,ejs的作用也不是引入公共的组件,直接就是一个完整的页面,用webpack中处理ejs文件的loader返回的是一个函数,故会产生问题

2.由于node.js配置了静态资源目录public,而视图目录与之同级,webpack在处理图像等静态资源目录的路径的时候会产生问题

3.如果使用publicpath 那么nodejs在运行的时候就会找不到资源,因为设置了静态资源的目录

如果你也遇到了类似的问题,希望你能在本文中找到解决方法。

这里多说一句:不要觉得我的项目很奇怪,因为我当时写的时候,知识储备不足,等到后面发现不妥的时候,为时已晚。

改起来太麻烦,所以将错就错了。。。。。。

解决方案

1.处理ejs

我在各个论坛,官网搜寻良久,始终没能找到,能处理我这种情况的loader。

没有办法之下,只能换一个思路,将ejs文件先转为html

首先要修改文件,那么就要修改服务器的模板引擎(这里是我的app.js)

那么要修改成什么呢?我要让nodejs使用ejs模板引擎,但是使用html文件来渲染

这里我们要用的是express中的app.engine 来注册一个引擎

代码如下:

app.set('views',path.join(__dirname,'views'));//设置模板引擎的目录
app.engine('html', require('ejs').renderFile);
app.set('view engine','html');
<了

2.webpack处理html文件

首先引入我眼帘的是webpack插件:HtmlWebpackPlugin

我找了许多文章,文章中对html文件的处理无一列外都用到了这个插件

既然那么多人用,那么它的强大是毋庸置疑的。

但是配置好后运行webpack,报了一个locals未定义的错误

报错代码:

由于locals是由express中的res.render()传回页面的数据,而在此时webpack处理的时候,理所当然的会报未定义的错误了。

那么这个问题怎么解决呢?

我现在需要让webpack帮我处理html中的资源,又要让webpack不要理会ejs的语法,帮我继续压缩代码,就陷入了一个十分难受的境地。

在搜寻良久无果后,一篇误打误撞的文章启发了我

这篇文章的博主是希望,webpack能够把ejs引入的模板打包到一个页面中,而我恰恰相反,我就是需要webpack不理会我的ejs代码。

于是解决办法氤氲而生。

首先我将原本html中的js代码抽离到test.js中

然后以这个js文件为入口文件,再以原本的html文件为模板

用HtmlWebpackPlugin来生成我所需要的压缩过后的html

解决代码

webpack.config.js

'use strict';
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
//打包ejs
module.exports = {
 entry: {
 test: './test.js',//入口文件 即一般来说app.js
 mode:"production",//生产环境
 output: {
 path: path.resolve(__dirname,'build'),//输出路径
 filename: 'js/[name]/[name].js'//输出后的文件名
 externals: {
 jquery:'window.jQuery'
 },//外部加载的资源 这些都是不需要进行打包的
 module: {
 rules: [//设置处理js文件的loader
 {test:/\.js$/,use:'babel-loader',exclude:/node_modules/},
 {test:/\.css$/,use:["style-loader","css-loader"]},
 test: /\.(png|jpg|gif)$/,
 use: [
 loader: 'file-loader',
 options: {
 name: 'images/[name].[ext]'
 test: /\.(html)$/,
 use: {
 loader: 'html-loader',
 options: {
 attrs: [':data-src']
 plugins:[
 new HtmlWebpackPlugin({
 name:'test',
 template:'./',//模板文件
 filename:'',//目标文件
 minify:{
 colla凡科抠图eWhitespace:true,
 colla凡科抠图eInlineTagWhitespace:true,
 conservativeColla凡科抠图e:true,
 minifyCSS:true,
 minifyJS: true,
 removeComments:true,
 trimCustomFragments:true
 optimization: {
 minimize: true//是否压缩代码
};

上面的minify参数主要是配置html压缩的

入口文件test.js

这里面没有任何有关webpack的代码,全是项目的业务代码,故在这里就不粘了

运行webpack 大功告成

我们来看看打包前后的html

打包前:

打包后

大小对比

启动nodejs服务器

总结

以上所述是小编给大家介绍的webpack打包nodejs项目,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对凡科网站的支持!


推荐阅读

如何开发微信小程序_webpack打包nodejs项意图方法

webpack装包nodejs新项目的方式 本文关键详细介绍了webpack装包nodejs新项目,十分非常好,具备一定的参照效仿使用价值,必须的朋友能够参照下可用状况最先表明,此状况不具有广泛...

2021-01-08
高铁媒体广告编单系统功能模块与系统解决方案

APP服务平台开发设计、电子商务服务平台开发设计的总体处理计划方案服务广州市凡科APP开发设计企业出示超出5种流行开发设计服务,IOS开发设计、android开发设计,手机微信商城系统...

2021-01-08
从贞操女神看话题炒作

现阶段,蹭热点的方法五花八门,花式多种多样,最近取得成功的实例就是贞操女王。 贞操女王,本名涂世友,女士,七零后,出世于湖北省鄂州;武汉市高校新闻报道学研究生大...

2021-01-08
外贸网站制作的相关知识

出口外贸网站建设的有关专业知识创作者:以便让海外顾客更详尽的掌握自身的商品,根据互联网营销推广让大量顾客见到。许多公司都是创建归属于自身的出口外贸网站,那麼出外贸...

2021-01-08
长春小程序制作_Puppeteer 爬取动态生成的网页实战

Puppeteer 抓取动态性转化成的网页页面实战演练 本文关键详细介绍了Puppeteer 抓取动态性转化成的网页页面实战演练,网编感觉挺好的,如今共享给大伙儿,也给大伙儿做下参照。一...

2021-01-08
广州凡科互联网科技股份有限公司招聘淘宝客服

招聘人数:10职位信息岗位职责:1、利用淘宝旺旺等在线工具在线解答客户问题,促成交易;2、了解客户的需要,通过有效的沟通,促成顾客购买及老顾客回头;3、处理淘宝店铺客户订...

2021-01-08
X

400-8700-61718720358503
企业邮箱2639601583@qq.com
官方微信