多页面分离资源引用,按需引用JS和css

Vue3 多页面开发详解,详细配置、场景、问题及解决方案 在 Vue3 中,虽然默认推荐单页面应用(SPA),但多页面应用(MPA)在一些场景下更合适。 阅读详情

1.新建./src/tpl/index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <scritp src="http://cdn.bootcss.com/jquery/1.12.4/jquery.js"></scritp>
</head>
<body>
    <h1>这是首页</h1>
</body>
</html>

2.修改webpack配置文件:

    plugins:[
        new HtmlWebpackPlugin({
            filename: __dirname+'/build/html/login-build.html',
            template:__dirname+'/src/tpl/login.html',
            inject:'body',
            hash:true
        }),

        new HtmlWebpackPlugin({
            filename: __dirname+'/build/html/index-build.html',
            template:__dirname+'/src/tpl/index.html',
            inject:'body',
            hash:true
        }),

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

        // css抽取
        new extractTextPlugin("[name].css"),
    ]

这样执行webpack命令后,生成的2个目标文件(index-build.html,login-build.html),有什么问题呢?
2个文件都引入了所有的js和css。

下面我们要做到按需引用,不同的html模板引入仅它自己需要的css和js

1.为index.html新建一个index.css:

h1{color: green}

为index.html新建index.js,并在其中引入index.css:

alert('这是首页');

require('./css/index.css');

2.编辑webpack.config.js,为不同的html模板指定不同的配置节点

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

var extractTextPlugin = require('extract-text-webpack-plugin');

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'],
        'index':['./src/index.js']
    },

    externals:{
        'jquery':'jQuery'
    },

    module:{
        loaders:[
            // {test:/\.css$/,loader:'style-loader!css-loader'},
            {test:/\.css$/,loader:extractTextPlugin.extract('style','css')}
        ],
    },

    output:{
        path: __dirname+'/build/js', // 输出到那个目录下(__dirname当前项目目录)
        filename:'[name].js' //最终打包生产的文件名
    },

    plugins:[
        new HtmlWebpackPlugin({
            filename: __dirname+'/build/html/login-build.html',
            template:__dirname+'/src/tpl/login.html',
            inject:'body',
            hash:true,
            chunks:['main','user']   // 这个模板对应上面那个节点
        }),

        new HtmlWebpackPlugin({
            filename: __dirname+'/build/html/index-build.html',
            template:__dirname+'/src/tpl/index.html',
            inject:'body',
            hash:true,
            chunks:['index']   // 这个模板对应上面那个节点
        }),

        // css抽取
        new extractTextPlugin("[name].css"),
    ]
};

3.执行webpack之后
这里写图片描述
查看index-build.html中只引入了index.css和index.js

webpack 多页面手动配置 背景 目前负责前端专题活动开发。由于专题有很强的独立性与实效性,最初前端将每个专题都构建成一个独立的单页面项目,这样每开发一个专题就需要复制一遍项目结构。不仅工作重复代码冗余,而且远程仓库内容越来越多,不利于管理。因此,我选择了多页面应用,一个专题就是项目中的一个独立的目录,不需要每次重复构建。 该多页面需要实现的功能: 自动打包 html 对应的 js,css,图片 希望用... 阅读详情

相关推荐

Vite-第9篇:Vite在多页面应用中的实践

本文介绍了如何在Vite中高效开发多页面应用。首先,合理的项目结构设计是基础,建议将页面、静态资源和可复用组件分别存放在src/pages、src/assets和src/components目录中,并遵循统一的文件命名规范。其次,通过配置vite.config.js中的build.rollupOptions.input来指定多页面入口,并借助vite-plugin-html插件自动生成HTML文件。此外,文章还探讨了页面间资源共享与优化的方法,如使用公共CSS和JavaScript文件、代码分割以及静态资源

无 543

通过css、js文件在页面引入其他css、js文件

通过css、js文件在页面引入其他css、js文件 在我们的项目中(不用webpack),有时候需要引入很多的js文件来达到我们的需求,例如:elementUI的js,jq,vue.js、axios、layer等 那么我们就需要在需要的html 页面引入一大堆文件链接,例如: <link rel="stylesheet" href="../../lib/element2.13.0/lib-master/theme-chalk/index.css" /> <link rel="stylesh

mqbug的博客 451

微信小程序后台定位与实时位置更新的实战指南

本文提供了微信小程序实现后台定位与实时位置更新的完整实战指南。针对小程序退到后台后位置更新中断的痛点,详细解析了基于`startLocationUpdateBackground`API的后台定位解决方案。内容涵盖从隐私协议配置、项目权限声明,到授权、启动、监听、停止的核心代码流程,并分享了真机调试、性能优化及权限引导等关键避坑经验,帮助开发者构建稳定可靠的后台位置服务。

weixin_29008055的博客 466

ES6模块化(默认导入导出、按需导入导出、直接导入)

一、介绍ES6模块化 ES6 模块化规范是浏览器端与服务器端通用的模块化规范,ES6模块化的出现前端开发者不再需要额外的学习其他的模块化规范。 二、ES6 模块化规范中定义:1.每个 js 文件都是一个独立的模块 2.导入其它模块成员使用 import 关键字 3.向外共享模块成员使用 export 关键字三、默认导入导出默认导出语法:export default 默认导出的成员 默认导入语法:import 接收名 from ‘模块的路径’四、按需导入导出 按需导出语法: export

weixin_47745553的博客 4880

SpringCloud 2025王炸更新!GraalVM原生镜像启动速度提升90%实战

在当今云原生和Serverless架构盛行的时代,应用的启动速度已成为衡量技术栈竞争力的关键指标。传统SpringCloud应用由于依赖JVM的动态类加载、反射等机制,启动时间通常超过30秒,在Kubernetes滚动更新和函数计算场景下成为显著性能瓶颈。2025年,SpringCloud迎来里程碑式更新,通过深度集成GraalVM原生镜像技术,实现了启动速度提升90%的惊人突破,让SpringCloud应用正式进入"秒级启动"时代。

小筱在线博客 1098

Ansys Lumerical 启动时出现 Error: Could not connect to Ansys license server specified at 1055@ 的另一种解决办法

昨天在关闭了中之后 就能正常打开 FDTD 了,结果今天想开启出现了同样的报错:我猜测昨天能启动的原因在于关闭之后要重启电脑,并且在重启之后我第一时间打开 lumerical 测试因此端口没有被占用,今天是在电脑启动之后一段时间才打开所以又遇到了端口占用的问题。

qq_51404184的博客 9539

ES6模块化-默认(按需)导入和导出

ES6模块化-介绍 之前在nodejs中学习模块化,名称为“CommonJS模块化” 导出:module.exports=对象 导入:var 名称 = require(文件名字) 为什么要使用模块化? 模块化是代码共享机制体现 有一份代码(例如axios、vue等等)在许多场合下都要进行使用,那么不要自己开发,直接把别人开发好的代码共享给我们使用即可 在浏览器里边可以通过相反在nodejs中,不...

weixin_44867717的博客 7776

【数字图像相关-OpenCorr学习笔记】Epipolar search原理+代码解析

OpenCorr是一个开源C++库,用于研究和开发数字图像相关(DIC)技术它提供了2D和立体声DIC的全功能模块,以及数字体积相关(DVC)。最近正在学习OpenCorr,为了更深层次地理解ICGN,我打算浅浅剖析Opencorr的代码,学习的过程中写下这篇学习笔记,以后忘记了还能回来看看。同时,作为一名在读研究生,希望能得到社区大佬的指点,以及跟同学们一起学习进步。这一期主要讲解Eipipolar search的原理,并且附上部分代码解析。

ywyywyy的博客 1356

JS文件按需导入方式

Vue动态导入外部文件方式 let script = document.createElement('script') script.type = 'text/javascript' script.src = 'http://xxx.xxx.js' document.getElementsByTagName('head')[0].appendChild(script)

一只小山羊的博客 1148

从X86到ARM:全面解析服务器CPU架构的演变与未来趋势

本文深入解析了服务器CPU架构从X86到ARM的演变历程与未来趋势。文章从CISC与RISC两种设计哲学切入,分析了X86凭借生态建立的帝国地位及其面临的功耗挑战,并重点阐述了ARM架构凭借其卓越的能效比优势,正从移动端向数据中心市场发起冲击。未来,异构计算、软硬协同与专用芯片将成为服务器CPU发展的核心方向。

gold的博客 1126

基于ESP32的智能健康监测系统开发

本文介绍了如何基于ESP32开发智能健康监测系统,从硬件选型、系统架构到软件实现的每一个环节。通过ESP32的Wi-Fi功能、传感器模块和云平台的结合,我们实现了实时健康数据监测、远程查看、报警等功能。系统的低功耗特性使得其适用于长期健康监测,能够为用户提供更便捷的健康管理方案。随着技术的不断发展,未来智能健康监测系统将进一步发展。例如,增加更多的传感器,提升数据分析能力,甚至通过人工智能算法来预测用户的健康趋势,为用户提供个性化的健康建议。

2201_76125393的博客 1103

【ES6】模块化语法(默认、按需导入import导出export的操作)

ES6模块化语法(默认、按需导入import导出export的操作)

嗨,朋友你好!我是前端领域的工作者 2096

十.镜头知识之畸变问题

对于理想光学系统,在一对共轭的物像平面上,像的放大率是一个常数。但是对于实际的光学系统,当视场较大或很大时,像的放大率就要随视场而异,这样就会使像相对于物体失去相似性。这种使像变形的成像缺陷称为畸变。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2119

webpack4:css/sass编译优化分离,处理引用资源

在上篇中,解决了webpack4关于多页面及分离第三方库js和共用自定义库js的配置,本篇将以此为基础继续配置css引入、分离等功能。 本篇实现功能:css转换,sass编译转换,css代码优化压缩合并和提取,css图片资源定位路径的转换,处理浏览器css兼容,css中对静态资源(如图片)的引用打包,引用优化(base64)。 首先需要明确关于css打包的概念:**webpack构建工程中,htm...

一期一会的博客 2400

9.6华为OD机试真题 新系统 - 仓储货物有序出库 (Java/Py/C/C++/Js/Go)

9.6华为OD机试真题 新系统 - 仓储货物有序出库 (Java/Py/C/C++/Js/Go)

算法大师! 1196

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

在gulp打包文件时候 给静态资源 css js html文件内的引用增加时间戳

// 时间戳demo let through = require(‘through2’); let getDate = moment().format(‘YYYYMMDDHHmmss’); let ASSET_REG = { ‘CSS’: /([’"])([^\s’"].?)\1/ig, // 修改在css中的探测内容 ‘dynamic-loading’: /(function change(options) { return through.obj(function (file, enc, cb) { o

weixin_45631884的博客 636

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

webpack打包纯静态商城站:多页面资源处理与工程化实践

前端工程化的核心在于构建工具对静态资源的统一管理。webpack作为主流构建工具,通过loader和plugin机制将HTML、CSS、图片、字体等资源纳入一条可配置的处理管道,实现压缩、hash指纹、自动注入等生产级优化。对于传统多页面静态站,引入webpack的价值不在于模块化,而在于资源关系的显式化与构建产物的规范化。在电商商城等场景中,多页面入口配置、CSS抽离压缩、图片base64内联阈值控制、字体图标处理以及路径修正,是构建流程中的关键环节。本文以品优购静态商城为例,完整演示从零搭建webpac

weixin_28677451的博客 271

Devexpress16.2.6破解工具

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Vue.config.js中的Webpack配置、优化及多页面应用开发

Vue.config.js工程化配置实践 本文系统介绍了Vue CLI项目中vue.config.js的核心配置方法,涵盖三个关键方面: 基础配置:包括环境变量适配、静态资源管理、开发服务器优化与代码质量控制,重点讲解了publicPath动态配置、devServer代理设置和生产环境构建优化策略。 性能优化:详细解析了代码压缩、tree shaking、资源预加载/懒加载、图片压缩和Gzip压缩等关键技术,提供了具体的webpack插件配置示例。 多页面应用开发:阐述了多入口配置方法、独立路由管理方案和公

577

webpack 配置多页面应用的一次尝试

最近有一个项目,考虑到要进行 SEO,所以要做成多页面应用。为了保证开发速度和开发效率,所以决定使用 webpack 做一套模块化配置方案。 下面主要针对一些重要的点提供思路,并不作详解。完整的代码,我会放在 github(项目地址)上供大家参考,如果有优化的地方,请在评论区指点出来,。 目录 |-- build webpack 配置 ...

recoLuan 964

前端html+css+js面试题整理,附常用标签属性手册。

一、什么是选择器,选择器包括哪几种? 选择器:选择器就是找到你要渲染的那个HTML标签。 选择器类型: HTML标签选择器:直接作用于某个HTML标签 类选择器:可在页面中被多次使用 ID选择器:作用于同一ID的某个资源,同一个页面中只能使用一次 二、样式的引用(三种) 行内样式:写在某个标签中,只对本行有效。 内嵌样式:也在某个页面中,只对本页面有效前面的例子都是内嵌样式。 外部样式:写在某个单...

weixin_45705135的博客 2921

webpack多个Html,少量修改webpack配置支持打包多页面

webpack一般是配合单页面应用使用,但并不是所有的web应用都是单页的,有多个页面的情况还是很多的,当然你可以用其它的构建工具来打包,但对于习惯了webpack的你来说,要是能直接在webpack上做少许配置就可以支持多页面的打包构建,岂不乐哉!准备工作webpack已安装webpack-dev-server已配置js、css、图片、字体等的loader都已配置完毕多页HTML处理既然是多页面...

weixin_33400388的博客 627

用ponytail轻松搞定多页面项目的资源合并与注入

前端工程化中,构建工具的选择往往取决于项目形态与维护成本。面对传统多页面项目,不断增多的静态资源依赖顺序、版本号更新与HTML标签维护,常让人陷入低效手工操作。ponytail这一类轻量资源收束工具,核心原理是将多个JS/CSS按声明顺序合并、压缩并生成哈希指纹,再自动注入HTML对应位置。相比webpack等重型打包器,它更契合中小型项目的务实需求,提供构建速度快、配置直观、无运行时依赖的工程化收益。适用于老项目轻量改造、静态站点多页面发布或CDN部署等场景,在不引入繁重工具链的前提下,高效解决资源管理最

weixin_34112399的博客 248

Webpack构建多页应用Mpa(四):提取公共js、css、html代码,实现图片、字体单独打包,拆分多环境配置文件

上一节教程Webpack构建多页应用Mpa(三):文件结构和自动化打包中,我们完成了Mpa的文件结构和自动化打包,这一节我们继续完善,完成公共html代码的提取,并自动化导入。例如:A.html、B.html、C.html三个页面都有的头部代码header.html,自动化 ...

IT飞牛 1344

JavaScript介绍和使用

JavaScript介绍: JavaScript是一门脚本语言。计算器中除了脚本语言还有一下几种语言,这里我们总结一下: 汇编语言、脚本语言、机器语言、高级语言。以下语言我们只需要认识脚本语言。 脚本语言的特点: 对比其他类型语言编程速度更快,不需要编译、简单、易学、易用、灵活性高。当然这样的灵活性也是有牺牲的,他的运行速度相对于其他的语言可能更慢,运行更消耗资源。 如下图: 它的提示框出来了但是它的html语言没有显示出来。 因为它的消耗比较大,所有它需要刷新..

weixin_57766518的博客 990
上一篇: 构建登录页面:css提取(不打包到js中)
下一篇: 用webpack的CommonsChunkPlugin提取公共代码的3种方式
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值