当前位置: 首页 > news >正文

网站建设学校培训/网页优化包括什么

网站建设学校培训,网页优化包括什么,无锡网站制作供应,本地唐山网站建设零:AggressiveSplittingPlugin, AggressiveSplittingPlugin 可以将 bundle 拆分成更小的 chunk,直到各个 chunk 的大小达到 option 设置的 maxSize。它通过目录结构将模块组织在一起。 用于将捆绑包拆分为多个较小的块以改进缓存。这对HTTP2 Web服务器…

零:AggressiveSplittingPlugin,

AggressiveSplittingPlugin 可以将 bundle 拆分成更小的 chunk,直到各个 chunk 的大小达到 option 设置的 maxSize。它通过目录结构将模块组织在一起。
用于将捆绑包拆分为多个较小的块以改进缓存。这对HTTP2 Web服务器最有效,否则会增加请求数量的开销

        new webpack.optimize.AggressiveSplittingPlugin({minSize: 30000,maxSize: 50000}),

一: 不见了

二:使用chunkhash!

hash:
任何一个改动都会影响另外其他的最终文件名。上线后,另外其他文件的浏览器缓存也全部失效。

那么如何避免这个问题呢?

答案就是chunkhash!

根据chunkhash的定义知道,chunkhash是根据具体模块文件的内容计算所得的hash值,
所以某个文件的改动只会影响它本身的hash指纹,不会影响其他文件

三: css 代码分离

extract-text-webpack-plugin

四: Code Splitting(代码分离)和Loaders(解析器)

example.js

require("bundle-loader!./file.js")(function(fileJsExports) {console.log(fileJsExports);
});

file.js

module.exports = "It works";

五:代码分离和 异步import

通过异步import创建异步上下文,创建后,webpack会将 “1”,”2”分别单独打包出来

function loadC(name) {return import("c/" + name);
}Promise.all([loadC("1"), loadC("2")]).then(function(arr) {console.log("c/1 and c/2 loaded", arr);
});

六:利用import()语法创建ContextModule,它们被分成单独的块,如:./ templates文件夹中的每个模块。

async function getTemplate(templateName) {try {let template = await import(`./templates/${templateName}`);console.log(template);} catch(err) {console.error("template error");return new Error(err);}
}getTemplate("foo");
getTemplate("bar");
getTemplate("baz");

七:如何过滤import()语句的ContextModule结果。

如:在templates文件夹中。 只有.js文件会被单独打包, .noimport.js文件不会被单独打包

async function getTemplate(templateName) {try {let template = await import(/* webpackInclude: /\.js$/ *//* webpackExclude: /\.noimport\.js$/ */`./templates/${templateName}`);console.log(template);} catch(err) {console.error(err);return new Error(err);}
}getTemplate("foo");
getTemplate("bar");
getTemplate("baz");
getTemplate("foo.noimport");
getTemplate("bar.noimport");
getTemplate("baz.noimport");

八: 给import异步导入的模块自定义名称

方式一:
import("./templates/foo" /* webpackChunkName: "chunk-foo" */ ).then(function(foo) {console.log('foo:', foo);
})方式二:
require.ensure([], function(require) {var foo = require("./templates/foo");console.log('foo:', foo);
}, "chunk-foo1");方式三:
var createContextVar = "r";
import("./templates/ba" + createContextVar /* webpackChunkName: "chunk-bar-baz" */ ).then(function(bar) {console.log('bar:', bar);
})

九:将第三方库代码与公共代码分别打包

使用optimization.splitChunks进行自动重复数据删除

    optimization: {splitChunks: {cacheGroups: {commons: {chunks: "initial",minChunks: 2,maxInitialRequests: 5, // The default limit is too small to showcase the effectminSize: 0 // This is example is too small to create commons chunks},vendor: {test: /node_modules/,chunks: "initial",name: "vendor",priority: 10,enforce: true}}}},

十:如何将入口点的深层祖先的常见模块拆分为单独的公共块

同九

十一: 创建DLL 或创建library

我觉得这种情况适用于单独编写的工具或组件库

十二: externals的使用

十三: 国际化(i18n)

example.js

console.log(__("Hello World"));
console.log(__("Missing Text"));

webpack.config.js

var path = require("path");
var I18nPlugin = require("i18n-webpack-plugin");
var languages = {en: null,de: require("./de.json")
};
module.exports = Object.keys(languages).map(function(language) {return {name: language,// mode: "development || "production",entry: "./example",output: {path: path.join(__dirname, "dist"),filename: language + ".output.js"},plugins: [new I18nPlugin(languages[language])]};
});

de.json

{"Hello World": "Hallo Welt"
}

十四: tree shaking (通过side-effects属性删除无用代码)

example.js

import { a as a1, b as b1 } from "big-module";
import { a as a2, b as b2 } from "big-module-with-flag";console.log(a1,b1,a2,b2
);

node_modules/big-module/package.json

{"name": "big-module"
}

node_modules/big-module-with-flag/package.json

{"name": "big-module-with-flag","sideEffects": false
}

node_modules/big-module(-with-flag)/index.js

export { a } from "./a";
export { b } from "./b";
export { c } from "./c";

十五: 通过webpack配置 指定特定的模块单独打包

var path = require("path");
module.exports = {// mode: "development || "production",entry: {vendor1: ["./vendor1"],vendor2: ["./vendor2"],pageA: "./pageA",pageB: "./pageB",pageC: "./pageC"},output: {path: path.join(__dirname, "dist"),filename: "[name].js"},optimization: {splitChunks: {cacheGroups: {vendor1: {name: "vendor1",test: "vendor1",enforce: true},vendor2: {name: "vendor2",test: "vendor2",enforce: true}}}}
};
http://www.lbrq.cn/news/753913.html

相关文章:

  • 北京企业建站团队/微信小程序开发零基础入门
  • 苏州网站开发培训/百度搜索推广怎么做
  • 网站建设wordpress/宁波seo网络推广定制多少钱
  • 做违法网站程序员犯法吗/昆明百度推广开户费用
  • 做搞笑视频网站靠神魔赚钱/海外网站推广优化专员
  • 房产网站建设的目的/微信营销推广
  • 中山网站建设推荐/怎么网上推广自己的产品
  • 网站架构的重要性/销售网站有哪些
  • 网站开发部组织架构/茶叶seo网站推广与优化方案
  • 旅游网站模板免费下载/2021年网络热点舆论
  • 外网IP访问wordpress/seo关键词排名优化销售
  • 大型网站制作平台/网络广告策划与制作
  • 湖北seo排名诊断/seo站长工具平台
  • 网站有了订单邮箱提醒代码/百度竞价推广开户
  • 网站做收藏任务有用吗/域名注册优惠
  • 我的家乡网页制作步骤/站长工具seo综合查询分析
  • 泰州网站建设服务热线/在线培训平台有哪些
  • 找人做网站属于诈骗吗/杭州网络推广公司
  • 贵阳市建设厅网站/seo基础知识包括什么
  • 网站建设与维护大学生总结/制作链接的app的软件
  • 还有河北城乡和住房建设厅网站吗/seo搜索引擎优化师
  • 教育培训网站抄袭/网络营销电子版教材
  • 十大财务软件/推推蛙贴吧优化
  • 用记事本做电影介绍的网站/seo教学视频教程
  • 引流推广营销/苏州seo关键词排名
  • 网站建设代理平台/武汉大学人民医院怎么样
  • wap网站开发自适应手机屏幕开源包/深圳百度推广代理
  • 国外网站服务器建设/上海百度关键词优化公司
  • ps做网站logo尺寸/白嫖永久服务器
  • 萧山做网站哪里找/微信指数是什么意思
  • 向量数据库基础和实践 (Faiss)
  • riscv中断处理软硬件流程总结
  • Fixture Caliper 工具
  • 银行间交易IMIX协议加密相关
  • 异构数据库兼容力测评:KingbaseES 与 MySQL 的语法・功能・性能全场景验证解析
  • ESP32-S3_ES8311音频输出使用