用webpack把我们的业务模块分开打包

打包工具系列之——webpack 打包原理及优化 啊啊啊 阅读详情

这里写图片描述
如何用webpack打包这3个js?
只需修改webpack的配置文件webpack.config.js:

// entry是入口文件,可以多个,代表要编译那些js
    entry:['./src/main.js','./src/login.js','./src/reg.js'],

这样就可以全部打包,最终生成./build/js/build.js

1,那么如果我们想最后生成不同的文件,该如何做到呢?
今天我们就要用到webpack的模块拆分插件

entry:
    {
        'main':'./src/main.js',
        'user':['./src/login.js','./src/reg.js']
    },

拆分模块:login.js和reg.js我们都定义给user节点,那么下面我们就来把这个user节点单独打包,核心代码:

// 拆分插件
        new webpack.optimize.CommonsChunkPlugin({
            name:'user', // 上面入口定义的节点组
            filename:'build-user.js' //最后生成的文件名
        }),

webpack.config.js全部代码:

var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack');

module.exports = {
    // entry是入口文件,可以多个,代表要编译那些js
    //entry:['./src/main.js','./src/login.js','./src/reg.js'],

    entry:
    {
        'main':'./src/main.js',
        'user':['./src/login.js','./src/reg.js']
    },

    output:{
        path: __dirname+'/build/js', // 输出到那个目录下(__dirname当前项目目录)
        filename:'build.js' //最终打包生产的文件名
    },
    plugins:[
        new HtmlWebpackPlugin({
            filename: __dirname+'/build/html/login-build.html',
            template:__dirname+'/src/tpl/login.html',
            inject:'head',
            hash:true
        }),

        // 拆分插件
        new webpack.optimize.CommonsChunkPlugin({
            name:'user', // 上面入口定义的节点组
            filename:'build-user.js' //最后生成的文件名
        }),
    ]
};

这里写图片描述

然后再来看看html模板文件的变化:
这里写图片描述

Webpack 实践: 前端 SDK 开发(使用 webpack 打包 library) Webpack 实践: 前端 SDK 开发(使用 webpack 打包 library) 文章目录Webpack 实践: 前端 SDK 开发(使用 webpack 打包 library)前言正文1. 第一版:源代码直接导出1.1 目录结构 & 源代码1.2 package.json 配置1.3 创建本地软连接1.4 引入结果测试2. 第二版:使用 webpack 打包2.1 安装依赖 & 目录结构2.2 源代码扩展2.3 webpack.config.js 配置2.4 打包成果2.5 usa 阅读详情

相关推荐

西门子PLC新手必看:200SMART与1200/1500的MODBUS RTU通讯实战(附完整配置流程)

本文详细解析了西门子PLC中S7-200 SMART与S7-1200/1500之间实现MODBUS RTU通讯的完整实战流程。内容涵盖硬件接线、软件配置及程序编写,重点讲解了200SMART作为从站、1200/1500作为主站的典型架构,并提供了关键功能块的使用方法和常见问题排查技巧,帮助新手快速打通不同系列PLC间的数据交换。

weixin_29214559的博客 393

webpack 打包拆分原则和理解(SplitChunksPlugin)

webpack 打包出来出来的bundle.js的由来和组成: 一。webpack4.0 使用SplitChunksPlugin来进行拆分,SplitChunksPlugin有三种模式async,all,initial 默认情况下为async,我们什么都不设置看到的打包,就是按async来的,async模式下只从动态加载的模块里面进行拆分,例如main.js 文件为入口文件 里面引入了jquery,打包的时候不会将jquery文件拆分出来,XXX.vue为模块,XXX.vue中import j...

小鱼尔呀 6660

PackML工业标准解析:统一机器状态管理与数据交换的实践指南

在工业自动化与智能制造领域,实现设备间的互联互通与高效协同是核心挑战。这背后依赖于一套标准化的机器行为与数据交换规范,其原理在于通过定义统一的状态模型与接口协议,消除不同厂商设备间的“语言”隔阂。这项技术的核心价值在于大幅降低系统集成复杂度、提升运维效率与生产透明度,是构建数字化工厂的基石。其典型应用场景包括包装机械、离散制造产线等需要多设备协同的领域。本文聚焦的PackML(包装机械语言)标准,正是这一理念的杰出实践,它通过一套严谨的**状态机模型**和**数据标签(PackTags)** 体系,为机器提

weixin_30070339的博客 399

webpack4配置:细说webpack4打包及拆分代码

webpack4.x打包拆分 在第14章开发、生产环境的拆分代码中,其实已经对webpack4.x的打包拆分,做过简单的介绍,但是在当时我对这一块其实也是一脸懵逼状态,只知道是这样配置的,但是具体该如何操作也是不清楚的,这里会略微细说一下,当然也只是个人了解到的了 在上一章中,说到过对第三方插件库的打包问题,说到了打包速度和打包后包文件体积的问题,打包的文件体积不宜过大,现在webpack打包时...

前端乱搞 vinvin1022 2829

团结引擎+OpenHarmony 记录 (持续更新中)

获取不到的原因是因为二者不在同一个线程中,所以数据没有同步。而 globalThis.context 数据进行了同步。(TuanjieMainWorkerHandler.ts中可以看到)在进行绘制 UI 的时候 ,如果组件有 Native API 就可能不会显示出来,例如 web 控件就不能展示出来,刚加上权限的时候 会报错 因为缺少 reason ,添加上就不会报错了。只有纯 UI 控件是可以展示出来的,注释掉 web控件后就可以。

m_cainiaokuaifei的博客 1490

MT4-EA自动化交易研究笔记(2022-04-22)

自从接触到mt4的EA自动化交易,更让我这个10多年的老程序员看到了曙光,目前来看也确实出了一点成果,只是是否能稳定盈利有待时间的考验,所以开此专栏,一来做做记录与分析,更好的优化我的EA,二来也希望能与更多的高手交流,以完善我的交易系统

t35254056的博客 2290

webpack打包,生成js,提供给node和浏览器使用

1、目标: 打包后,node和浏览器能够使用. 可以作为SDK提供给node,或者是前端 打包后,可以发布npm包 2、项目搭建: 2.1)项目初始化: 1. mkdir webpack-build 2. cd webpack-build 3. npm init,不停回车,然后最后输入yes即可 2.2)项目结构: | | - package.json | - webpack.config.js | - node_modules | - index.js | - dist 2.3)web

赶路人儿 4554

深度学习笔记(3)——kernel(内核)与filter(滤波器)

本文仅仅简单介绍了kernel和filter的概念,介绍了确定filter和kernel个数的方法。

cs111211的博客 7135

六、webpack的基本使用,路径,压缩,缓存,拆分配置文件(Mhua)

在根目录新建 config 目录,新建 webpack.config.dev.js, webpack.config.prod.js 文件。配置 webpack.config.js,配置 publicPath 值。webpack.config.comm.js:公共文件配置。webpack.config.dev.js: 开发文件配置。webpack.config.prod.js:生成文件配置。webpack.config.prod.js 生成环境配置。webpack.config.dev.js 开发环境配置。.

zmh_984983444的博客 653

【以太网硬件九】1000base-X是什么?

简要描述1000base-X物理层规范

highman110的博客 1万+

ArduPilot简介

一,什么是ArduPilot? ArduPilot是一个可信的,多用途的,开源的自动驾驶系统。该系统支持了非常多的交通工具类型,包括多旋翼无人机,传统直升机,固定翼飞行器,船,潜艇,巡逻车等。源码由大型开发者社区的专家和爱好者共同开发和维护。也欢迎更多的开发者加入源码的迭代演进,最好的“打开”方式就是加入开发者团队论坛。该论坛对所有人开放,在这里可以深入感受到开发者们对ArduPilot的热爱。 论坛链接:ArduPilot Discourse 开发者指南:Welcome to the ArduPil

从0到1,突破自己 5450

webpack3 CommonsChunkPlugin插件分离三方库(jQuery.js/vue.js等)和公共模块 分别打包

需求:使用webpack进行打包时,我们不想自己写的js文件与第三方的js库一起打包成一个庞大的文件,而是想要第三方插件库单独打包一个js 。我们自己写的js独立打包。 优点: 1.分割js文件避免单独一个js文件太大影响用户使用体验。 2.通常来说,第三方库文件我们不会去变动里面的内容,每次打包变动内容基本是在我们自己的js文件中,所以单独打包比较好。 准备: 想要实现js...

qq_27437073的博客 1565

【光子AI / Photon.AI】manus 通用 Agent 的实现核心技术原理与应用

摘要 Manus是一款由国内团队开发的通用AI Agent,其核心技术原理基于多智能体协作架构、云端全能沙箱、规划-执行-反思循环等系统工程方法。与传统的对话式AI不同,Manus能够在独立的Linux虚拟机环境中自主规划并执行复杂任务,通过编写和运行代码来解决问题,具备强大的纠错能力和工具使用能力。 核心应用场景包括深度行业研究、自动化办公、生活助理、辅助编程和跨平台信息整合等。Manus的工程化落地优势体现在沙箱环境、多智能体调度和容错机制等方面,使其能够完成需要多步骤操作和多种工具调用的复杂任务,将A

AI天才研究院 666

html5 模块化打包发布,详解用webpack把我们的业务模块分开打包的方法

webpack我自己还在摸索学习中,今天给大家分享个用webpack把我们的业务模块分开打包的方法,顺便留个笔记如何用webpack打包这3个js?只需修改webpack的配置文件webpack.config.js:// entry是入口文件,可以多个,代表要编译那些jsentry:['./src/main.js','./src/login.js','./src/reg.js'],这样就可以全部打...

weixin_30284287的博客 372

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

用webpack把我们的业务模块分开打包2

事实上,jquery这样的库我们生产环境肯定要使用CDN,而不会和我们的业务模块打包打一起。 比如国内的CDN地址: http://cdn.bootcss.com/jquery/1.12.4/jquery.js externals:{ ‘jquery’:’jQuery’ },1.源模板文件login.html引入jq<!DOCTYPE html> <html> <head>

3657

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

html模块分离,详解用webpack把我们的业务模块分开打包的方法

webpack我自己还在摸索学习中,今天给大家分享个用webpack把我们的业务模块分开打包的方法,顺便留个笔记如何用webpack打包这3个js?只需修改webpack的配置文件webpack.config.js:// entry是入口文件,可以多个,代表要编译那些jsentry:['./src/main.js','./src/login.js','./src/reg.js'],这样就可以全部打...

weixin_33860377的博客 329

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

webpack CommonsChunkPlugin详细教程

1.demo结构: 2.package.json配置: { "name": "webpack-simple-demo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "webpack": "webpack" }, "author": "", "

Alfred的博客 1058

前端webpack构建react系列三:分模块打包

分模块打包文件 在生产环境中,我们应该尽量减小JS文件的大小,将框架性的JS装载在一个文件中利用浏览器的缓存机制节约加载资源耗费时间 分块思路 1、react,react-dom这种由第三方维护的框架,一般不会进行更新。(真要更新就麻烦了,亲身经历,上级部门强制要求修复语言漏洞,硬逼着我们将某老项目php 5.6.x 更新到php7,这下有的忙了,一半多的代码挂掉了。) 2、自己编写的...

kiramario的博客 5488

html如何打包文件发送,手把手教你webpack如何打包才能输出最优生产文件

前言webpack打包大多数前端工程师们都已经用过,然后今天我想和大家分享的是webpack如何打包才能输出最优生产环境文件,主要针对两种人群:未自己手把手配置过webpack的人、配置过webpack但是不熟悉或者不知所以然的的人。如果fe大神看到请勿略此文,谢谢!准备工作在做讲解之前,我希望大家先去我的github上clone下我的demo项目,然后按照我的讲解亲自code一边!最基本的打包构...

weixin_35409775的博客 1989

webpack打包分离第三方库和业务代码

使用webpack打包工程,通常会需要分离第三方类库和应用本身的代码,因为第三方类库更新频率不高,这样浏览器可以直接从缓存读,不需要项目每次上线再获取一次。 以react为例,正常情况下,最初是这么配置的: 1 module.exports = { 2 entry: { 3 app: "./src/App.js", 4 ve...

weixin_30532369的博客 156

Webpack——模块打包

CommonJS、ES6 Module、CommonJS与ES6 Module区别、加载其他类型的模块、模块打包原理

码说芯语的博客 1753

webpack 按需打包vue项目,根据不同业务模块打包成不同包

需求 开发的项目需要每个页面打包成一个项目,给第三方平台上线 实现原理 把router.js分成好几个不同的路由。 问题: 入口main.js引用了router.js 也要每次都切换router.js来打包,这样main.js的代码并不好维护。 解决方案 1.我们可以同样把main.js 拆成 main_page1.js 和 main_page2.js,注意不同的main.js里面引用不同的router.js,然后使用webpack的特性mode来读取不同的main.js 2.首先在package.json

学而时习之,不亦说乎。 6843

React+Webpack实现第三方库和自己写的代码分开打包

背景 在项目中用webpack打包时,通常会将自己写的业务逻辑代码和第三方库的js文件一起打包成一个js文件,这样的话这个文件就会很大,对项目的运行速率影响很大。而且,我们在打包时每次都会将第三方库文件重新打包一次,但是往往这样是没有必要的,因为第三方往往是不会发生很大改变的,只是可能会需要升级一下。所以在这里,将第三方库文件和自己写的j...

weixin_33923148的博客 1122

浅谈webpack打包原理

模块化机制webpack并不强制你使用某种模块化方案,而是通过兼容所有模块化方案让你无痛接入项目。有了webpack,你可以随意选择你喜欢的模块化方案,至于怎么处理模块之间的依赖关系及如何按需打包,webpack会帮你处理好的。

耐得住寂寞也是一种境界 5万+

webpack 打包优化 - splitChunks

webpack5 默认情况下只对异步模块做打包优化,额外的打包必须满足 4 个条件(webpack 的默认配置,可修改)。根据需求可调整为只对初始模块做打包优化,或者初始和异步模块一起优化。同时可配置自己的打包规则。简而言之:chunks 控制打包作用范围,其他控制打包规则。webpack5 的 splitChunks 功能是比较强大的,不过推荐还是使用默认模式,或者提取一下第三方库。

weixin_54714100的博客 5218
上一篇: React Native商城项目实战07 - 设置“More”界面导航条
下一篇: 用webpack把我们的业务模块分开打包2
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值