webpack打包项目实战。看我怎么分项目管理

Webpack多页面应用项目实战配置指南 Webpack 是当下流行的 JavaScript 模块打包工具,它在构建工具生态系统中占据着核心地位。它不仅支持 JavaScript,还可以打包各种类型的资源文件,如 CSS、图片、字体等。Webpack 的工作原理基于依赖图,它分析项目中的所有文件,构建一个依赖关系图,然后打包输出到一个或多个 bundle 文件中。Webpack 的强大之处在于其灵活性,用户可以通过加载器(loaders)和插件(plugins)来扩展其能力,实现代码的转换、优化等高级功能。 阅读详情

最近在处理本博客的打包事项。第一次打包appJs飙升到3M左右,按照阿里云的小细水管,大约流淌了10分钟左右。终于流淌进我的浏览器。当时我的心在抽搐。今天我们就从这里说起

单独打包css 和 font信息

打包css

new ExtractTextPlugin("static/css/styles.css"),

{
    test: /\.css$/,
    use: ExtractTextPlugin.extract({
        use: 'css-loader',
        fallback: 'style-loader'
    })
 },

打包字体

{
     test: /\.(png|jpg|gif)$/,
     loader:'url-loader?limit=8192&name=./static/img/[name].[ext]'      
},
{
     test: /\.(ttf|woff|svg|eot|woff2)$/,
     loader:'url-loader?limit=8192&name=./static/font/[name].[ext]'     
}

拆分第三方包

entry: {
        app:path.resolve(__dirname,'src/main.js'),
        vue:['vue','vuex','vue-resource'],
        element:['element-ui'],
        mEditor:['mavon-editor']
},

new webpack.optimize.CommonsChunkPlugin({ 
    name: ['vue','element','mEditor'], 
    filename: 'static/js/vendor.[name].js', 
    chunks: 4       
}),

vue 要求我们按需加载(异步) 我们更改引入法则

import Vue from 'vue'
import VueRouter from "vue-router"
Vue.use(VueRouter)
/*异步加载法则*/
const Login = resolve => require.ensure([],()=> resolve(require('../components/Login/Login.vue')),'Login');

我们看看效果吧

图片
图片

虽然还是有点大,但是比起3m兼职想哭。配合CDN加速估计2秒打开。这个时间我觉得可以接受

附:打包文件

const webpack=require("webpack");
const path = require('path');
const node_modules = path.resolve(__dirname, 'node_modules');
const UglifyJsPlugin = webpack.optimize.UglifyJsPlugin;
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const HtmlwebpackPlugin=require("html-webpack-plugin");
const CleanWebpackPlugin = require('clean-webpack-plugin');
module.exports = {
    entry: {
            app:path.resolve(__dirname,'src/main.js'),
            vue:['vue','vuex','vue-resource'],
            element:['element-ui'],
            mEditor:['mavon-editor']
    },
    output: {
        path: path.resolve(__dirname, 'dist/app'),
        filename: 'static/js/app_[name].js',
    },
    module: {
        loaders: [ 
           {
                test:/\.vue$/,
                loader:'vue-loader'
            },
            {
                test: /\.css$/,
                use: ExtractTextPlugin.extract({
                    use: 'css-loader',
                    fallback: 'style-loader'
                })
            },
            {
                test:/\.js$/,
                loader:'babel-loader',
                exclude:/node_modules/,
                query: {
                    presets: ['es2015']
                 }  
            },
            {
                test:/\.less$/,
                loader:'style-loader!css-loader!autoprefixer-loader!less-loader'
            },
            {
                test:/\.scss$/,
                loader:'style-loader!css-loader!autoprefixer-loader!sass-loader'
            },
            {
                 test: /\.(png|jpg|gif)$/,
                 loader:'url-loader?limit=8192&name=./static/img/[name].[ext]'      
            },
            {
                 test: /\.(ttf|woff|svg|eot|woff2)$/,
                 loader:'url-loader?limit=8192&name=./static/font/[name].[ext]'     
            } 

        ]
    },
    plugins:[
        new webpack.optimize.CommonsChunkPlugin({ 
            name: ['vue','element','mEditor'], 
            filename: 'static/js/vendor.[name].js', 
            chunks: 4       
        }),
        new UglifyJsPlugin({
            compress:{
                warnings:false
            }
        }),
        new ExtractTextPlugin("static/css/styles.css"),
        new HtmlwebpackPlugin({
            title: 'index',  //生成的页面标题
            filename: 'index.html', //生成的文件名称
            template: 'index.html' //根据index1.html这个模板来生成

        }),
        new CleanWebpackPlugin(
            ['dist/app/'],  //匹配删除的文件
            {
                root: __dirname,                 //根目录
                verbose:  true,                  //开启在控制台输出信息
                dry:      false                  //启用删除文件
        })
    ]
}

文章来自:九零码农

Node.js-利用webpack使传统html项目在node服务器运行并打包的小玩意 利用webpack使传统html项目在node服务器运行并打包的小玩意 立即下载

相关推荐

从零到一:NI USB-8506 LIN通讯的驱动安装与硬件调试全攻略

本文详细介绍了NI USB-8506 LIN通讯设备的驱动安装与硬件调试全流程,包括硬件准备、驱动下载与配置、NI MAX设置及常见问题解决方案。通过实战应用与性能优化技巧,帮助用户快速掌握LIN通讯技术,适用于车载数据记录和自动化测试等场景。

weixin_28273593的博客 924

如何使用Webpack打包

简单的说了一下webpack是干嘛的,和webpack如何安装,如何进行打包,步骤很详细,感兴趣的同学可以试着操作一下。 文章目录1、webpacks是什么?2、Webpack安装3、初始化项目4、使用webpack进行JS打包5、使用webpack进行CSS打包总结 1、webpacks是什么? Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。 从图中我们可以看出,Webpack 可以将多种静态资源 js、css、le.

weixin_47316183的博客 1万+

SPSS(二)SPSS实现多因素方差分析模型(图文教程+数据集)

SPSS(二)SPSS实现多因素方差分析模型 单因素方差分析上一篇博客https://blog.youkuaiyun.com/LuYi_WeiLin/article/details/89917656已经介绍完毕 这篇博客我们主要来学习多因素方差分析 多因素方差分析,就是同时考虑若干个控制因素的情况下,分别分析它们的改变是否造成观察变量的显著变动 (多个自变量,一个因变量)自变量类型以分类变量为主也可以...

可乐联盟 6万+

webpack 打包全流程

只有在脚本使用时才会调用。ES6渐渐取代CommonJs。

harvestUachieve的博客 4752

机器视觉学习(七)—— 卷积、边缘和滤波器

卷积运算、垂直边缘与水平边缘、滤波器

歆歆~黯了 2740

《SAP FICO系统配置从入门到精通共40篇》030、集成配置:FI与生产计划(PP)的自动科目确定

FI和PP的自动科目确定,本质上是把生产业务翻译成会计语言。翻译规则就藏在那些配置表里。配的时候多想一步:这个业务动作,在财务眼里是什么?是材料消耗?是产出入库?还是工费分摊?想清楚这个,再看配置界面,那些代码就不是天书了。最好的测试方式,是月底关账前,让生产部门跑一遍所有类型的生产订单。配置对不对,业务最知道。

985大学毕业,前某大厂员工,啥都会点的程序员! 574

Webpack打包-打包详细流程

Webpack是一个现代化的静态模块打包器,支持JavaScript、CSS、图片等资源的打包。它将所有模块及其依赖项视为静态资源,并创建一个依赖关系图,将这些资源转换为有效的输出文件。通过Webpack,可以将多个文件打包成一个或多个文件,并在网页中加载使用。 Webpack 支持各种开发场景和应用程序类型。在Webpack中,所有资源都被认为是模块,可通过引入其他模块而使用。Webpack提供了配置文件,允许开发人员自定义构建流程,以便灵活地满足各种场景的需求。Webpack 的功

weixin_40381947的博客 1万+

099、多摄融合与变焦系统:广角到长焦的无缝切换算法

本文分享了多摄融合与变焦系统开发中的实战经验和关键挑战。作者通过一个旗舰机项目案例,揭示了广角到长焦切换时画面抖动问题的根源——融合算法误将视差当作运动补偿,并提出"视差冻结窗口"的解决方案。文章总结了三大多摄融合难点:物理视差处理、亮度差异补偿和切换时机把控,详细阐述了分层架构设计、融合权重计算等核心技术。同时强调了产线校准的重要性,并给出五项实用建议:允许边缘鬼影保留、参数场景化配置、加强产线检测、完善调试接口,以及合理运用AI技术。全文展现了多摄融合技术在时间、空间和感知维度上的复杂平衡艺术。

sundong_81的博客 48

webpack 打包流程

webpack 打包原理

张三军的博客 1万+

指纹浏览器降维打击(下):Cloudflare Turnstile 与 hCaptcha 的底层交互逻辑

本文将深度拆解:Turnstile 与 hCaptcha 的 Iframe 沙箱通信机制,动态混淆 JS 与 PoW(工作量证明)的物理破解法则,以及如何通过 C++ 底层事件合成与环境基因强绑定,实现验证码的“无感过验”。

数据知道的博客 422

【Codecs系列】HEVC-SCC(一):核心技术介绍

DATE: 2020.6.4【Tags: HEVC SCC】 1、参考网址 2、SCC简介 3、HEVC-SCC核心技术

优快云明星博主,认证博客专家,视频、Matlab领域优质创作者。 4805

【Vue】如何使用Webpack实现打包操作

其实,我觉得这个webpack打包更有意思的,把我们的源文件进行压缩后,可以直接调用或者运行。我之前玩过一段时间的小程序,当时有个人给了我一个程序代码就是打包过后的(当时自己还不知道打包这个东东),这个程序可以用小程序直接运行,但是那么代码就看不懂,让自己困惑了好一段时间。当然现在自己学的比较多,之前不同的地方来慢慢清晰了起来。为什么要说这个事呢?其实是希望在屏幕前看这篇博客的小伙伴能够不忘初心,砥砺前行。那些让你现在迷惑的,搞不懂的,终有一天,你会把所有的细节,所以的内部把内容都搞明白的!加油!各位!

qq_51933234的博客 3259

OpenClaw Docker 安装与部署教程,环境隔离不冲突技术指南

本文介绍了使用Docker容器化部署OpenClaw的完整教程。首先通过流程图详细说明了Docker环境检测流程,包括系统支持性检查、Docker安装状态验证、版本检测和服务配置等步骤。然后提供了Windows、macOS和Linux(Ubuntu/CentOS)系统下的Docker安装指南,涵盖从下载、安装到权限配置的全过程。最后介绍了OpenClaw官方镜像的拉取方法以及自定义镜像构建的Dockerfile示例。该教程适用于开发和生产环境,利用Docker实现环境隔离和快速部署。

一键难忘的博客 987

【前端面试题】前端工程化、Webpack、Vite、Git项目管理相关问题

选项和动态导入(import())来实现代码分割。代码分割可以减少初始加载时间,按需加载代码。:在Webpack中,如何进行代码分割(code splitting)?:如何使用Webpack的缓存(caching)功能来提高构建速度?带有哈希值来实现长效缓存。:可以使用持久化缓存,如。:Webpack通过。

qq_41767061的博客 981

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

webpack入门学习笔记11 —— 在项目中对打包编译的文件进行分类

1. 写在前面 在前面的博客中,我们对Webpack项目进行了很多配置,也多次打包编译了项目。如果你细心观察的话,你会看到,项打包编译后的目代码,全部都放在了 build 文件夹下,没有根据文件格式的不同再次进行分类。 但是我们所期望的场景是:项目打包编译之后,对文件进行分类,不同的文件放在不同的文件夹下。比如打包编译后,图片全部都放在 build/images 文件夹下,样式文件全部放在 bu...

fengzhen8023 416

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

python web项目打包部署_打包package

maven常用命令maven常用命令mvn clean --清理打包文件(移除target目录)mvn eclipse:eclipse 将一个maven项目生成eclipse项目mvn eclipse:clean 清除eclipse项目文件mvn package 打包mvn install 将打成的包安...文章技术小胖子2017-11-14739浏览量maven执行"mvn clean pack...

weixin_39920403的博客 1419

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

创建基于Webpack的Vue.js项目

创建基于Webpack的Vue.js项目。一、Webpack简介。二、创建基于Webpack的Vue.js项目 1、前提条件(检查node和npm版本信息,升级你的 Node 版本)。2、安装Webpack、Vue.js。 3、创建基于Webpack的Vue.js项目。三、Webpack下的Vue.js项目文件结构。四、打开Vue项目管理器

逆境清醒的博客 6295

webpack打包--创建webpack项目

Vue脚手架+webpack打包 开始学习: 参考文档:Vue CLI使用官网:安装 参考文档生成项目的两种方式: 首先安装全局的Cli:npm install -g @vue/cli 一个说明:创建新的项目或者打开项目 首先要定位到自己创建的操作目录文件 1:通过命令直接生成项目:(适合一个新的需要快速开发的项目) a:打开终端定位到需要存放项目的文件夹: b:通过命令:vue c...

学习是修养的提升 260

NPM和webpack的关系(转载)

入门前端的坑也很久了,以前很多大小项目,前端都是传统式开发,一直在重复造轮子;接触VUE后,对vue-cli有了解后,仅仅知道vue-cli是一个vue项目的脚手架,可以快速的构建一个vue的基于npm的模块化项目,vue内部的打包机制其实还是借助webpack;但是对webpack\npm\node\nodejs这几个在前端模块化中的高频词总是傻傻分不清,不知道他们之间的具体关系,今天花了些功夫...

友人C君的博客 1万+

基于node.js使用webpack打包工具启动的一个小项目

在自己的桌面新建一个文件夹 例如my-demo 打开cmd控制台,进入 查看node的版本 node-v 查看npm的版本 npm -v 让该文件基于npm 管理 npm init 一路回车,生成一个package.json 文件 局部安装webpack npm i webpack webpack-cli -D 生成node_modules 新建如下三个测试文件(es6的模块化浏览器不支持,可以借助webpack来识别) index.html <!DOCTYPE html>

u014183772的专栏 678

webpack4多入口多出口打包index.html自动加上代理路径

为了避免项目代码都打包在一个文件下面,我采用多入口多出口打包的方式,以src/pages文件夹为目录,然后在pages下分别创建每个功能的文件夹进行代码开发。这样打包之后就会分别打到每个文件夹下。效果如图: chargeAction文件夹: debang文件夹: 这样访问的时候就可以通过: http://localhost:8106/文件夹名/来访问每个功能点,如图: 但...

浪漫的Code 2550

js加版本号 webpack_webpack 打包增加版本信息

What do we need?笔者目的是在vue项目打包后的 dist/index.html 文件中写入本次打包git用户、最后一次git提交信息,这样做的目的是便于线上项目的管理和防止同事之间的相互扯皮。最后打包出的效果如下图:How to do?版本信息需要记录 git最后一次提交作者(作者名和邮箱邮)、日期、commit HEAD,本次打包git用户和邮箱、日期,这些信息都需要使用 git...

weixin_39865061的博客 444

webpack打包之初体验

我使用的编译器是webpack,在此我就不讲webpack的什么有点用处什么的了 首先还是小伙伴们看一下我的文件目录吧,免得建文件的过程蒙蔽 首先我们建一个文件夹src 在src文件夹下建三个js模块文件,分别为a.js ,  b.js ,c.js  js文件内容分别为, export default function a(){ console.log('mode

ztg_superman的博客 626

webpack打包及node_modules依赖介绍

稍等跟新

weixin_39458031的博客 9792

webpack打包某个文件夹下的所有js文件方法

最近遇到一个问题,如何打包某个文件夹下的所有js文件。 例如我们想打包src下common中的所有js文件。感谢stack overflow上的大神们的解答,为此将方法记录下来: 方式一:用数组将所有要打包的js路径写入。 翻看webpack的文档,看到下面的一段文字。 What happens when you pass an array to entry? Passing an a...

zesii的博客 1万+

js加版本号 webpack_【转】webpack 打包增加版本信息

What do we need?笔者目的是在vue项目打包后的 dist/index.html 文件中写入本次打包git用户、最后一次git提交信息,这样做的目的是便于线上项目的管理和防止同事之间的相互扯皮。最后打包出的效果如下图:How to do?版本信息需要记录 git最后一次提交作者(作者名和邮箱邮)、日期、commit HEAD,本次打包git用户和邮箱、日期,这些信息都需要使用 git...

weixin_39836943的博客 303
上一篇: 如何使用阿里云OSS储存文件和注意事项
下一篇: spring boot 2.X整合spring security和spring oauth
Java_chaozi
博客等级 码龄11年 11粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值