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

重构网站天津疫情最新情况

重构网站,天津疫情最新情况,石家庄网站建设人员,网站外链建设策略JavaScript 现代构建工具详解 🔨 现代前端开发离不开构建工具,它们帮助我们处理模块打包、代码转换、资源优化等任务。让我们深入了解主流的构建工具及其应用。 构建工具概述 🌟 💡 小知识:构建工具主要解决代码转换…

JavaScript 现代构建工具详解 🔨

现代前端开发离不开构建工具,它们帮助我们处理模块打包、代码转换、资源优化等任务。让我们深入了解主流的构建工具及其应用。

构建工具概述 🌟

💡 小知识:构建工具主要解决代码转换、文件优化、模块打包、自动刷新、代码分割等问题。主流的构建工具包括webpack、Vite、Rollup等,它们各有特点和适用场景。

webpack 详解 📦

// 1. webpack配置
class WebpackConfig {constructor() {this.config = {entry: './src/index.js',output: {path: path.resolve(__dirname, 'dist'),filename: '[name].[contenthash].js'},module: {rules: []},plugins: [],optimization: {splitChunks: {chunks: 'all'}}};}addLoader(rule) {this.config.module.rules.push(rule);}addPlugin(plugin) {this.config.plugins.push(plugin);}setDevServer() {this.config.devServer = {contentBase: './dist',hot: true,port: 3000,compress: true,historyApiFallback: true};}setOptimization() {this.config.optimization = {minimize: true,minimizer: [new TerserPlugin(),new CssMinimizerPlugin()],splitChunks: {chunks: 'all',minSize: 20000,maxSize: 244000,cacheGroups: {vendor: {test: /[\\/]node_modules[\\/]/,name: 'vendors',chunks: 'all'}}}};}
}// 2. 加载器配置
class LoaderConfig {static getJavaScriptLoader() {return {test: /\.(js|jsx|ts|tsx)$/,exclude: /node_modules/,use: {loader: 'babel-loader',options: {presets: ['@babel/preset-env','@babel/preset-react','@babel/preset-typescript'],plugins: ['@babel/plugin-transform-runtime']}}};}static getStyleLoader() {return {test: /\.(css|scss)$/,use: [MiniCssExtractPlugin.loader,{loader: 'css-loader',options: {modules: true,importLoaders: 1}},'postcss-loader','sass-loader']};}static getAssetLoader() {return {test: /\.(png|svg|jpg|jpeg|gif)$/i,type: 'asset',parser: {dataUrlCondition: {maxSize: 8 * 1024 // 8kb}}};}
}// 3. 插件配置
class PluginConfig {static getCommonPlugins() {return [new HtmlWebpackPlugin({template: './src/index.html',filename: 'index.html',inject: 'body'}),new MiniCssExtractPlugin({filename: '[name].[contenthash].css'}),new CleanWebpackPlugin(),new webpack.DefinePlugin({'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)})];}static getAnalyzerPlugin() {return new BundleAnalyzerPlugin({analyzerMode: 'static',reportFilename: 'bundle-report.html'});}static getCompressionPlugin() {return new CompressionPlugin({algorithm: 'gzip',test: /\.(js|css|html|svg)$/,threshold: 10240,minRatio: 0.8});}
}

Vite 特性与应用 ⚡

// 1. Vite配置
class ViteConfig {static getBaseConfig() {return {root: process.cwd(),base: '/',mode: 'development',define: {__APP_VERSION__: JSON.stringify('1.0.0')},resolve: {alias: {'@': '/src'}},css: {modules: {localsConvention: 'camelCase'},preprocessorOptions: {scss: {additionalData: `@import "@/styles/variables.scss";`}}}};}static getPlugins() {return [vue(),vueJsx(),legacy({targets: ['defaults', 'not IE 11']})];}static getBuildConfig() {return {target: 'es2015',outDir: 'dist',assetsDir: 'assets',cssCodeSplit: true,sourcemap: false,rollupOptions: {output: {manualChunks: {vendor: ['vue', 'vue-router', 'vuex']}}}};}
}// 2. 开发服务器
class DevServer {constructor(config = {}) {this.config = {host: 'localhost',port: 3000,https: false,open: true,cors: true,...config};}async start() {const server = await createServer({...ViteConfig.getBaseConfig(),server: this.config});await server.listen();server.printUrls();}configureProxy() {return {'/api': {target: 'http://localhost:8080',changeOrigin: true,rewrite: path => path.replace(/^\/api/, '')}};}
}// 3. 优化策略
class ViteOptimization {static getDependencyOptimization() {return {optimizeDeps: {include: ['vue','vue-router','@vueuse/core'],exclude: ['vue-demi']}};}static getBuildOptimization() {return {build: {target: 'es2015',minify: 'terser',terserOptions: {compress: {drop_console: true,drop_debugger: true}},rollupOptions: {output: {manualChunks(id) {if (id.includes('node_modules')) {return 'vendor';}}}}}};}
}

Rollup 配置与插件 📦

// 1. Rollup配置
class RollupConfig {static getBaseConfig() {return {input: 'src/index.js',output: [{file: 'dist/bundle.cjs.js',format: 'cjs'},{file: 'dist/bundle.esm.js',format: 'es'},{file: 'dist/bundle.umd.js',format: 'umd',name: 'MyLibrary'}],plugins: [],external: ['react', 'react-dom']};}static getPlugins() {return [resolve({browser: true}),commonjs(),babel({babelHelpers: 'bundled',exclude: 'node_modules/**'}),terser()];}static getWatchConfig() {return {watch: {include: 'src/**',exclude: 'node_modules/**'}};}
}// 2. 插件开发
class RollupPlugin {static createPlugin(options = {}) {return {name: 'my-rollup-plugin',buildStart() {console.log('Build starting...');},resolveId(source, importer) {if (source === 'virtual-module') {return source;}return null;},load(id) {if (id === 'virtual-module') {return 'export default "This is virtual!"';}return null;},transform(code, id) {if (id.includes('.js')) {// 转换代码return {code: code,map: null};}}};}
}// 3. 构建优化
class RollupOptimization {static getTerserConfig() {return {compress: {dead_code: true,drop_console: true,drop_debugger: true,pure_getters: true,unsafe: true,unsafe_comps: true},mangle: {properties: {regex: /^_/}}};}static getTreeShakingConfig() {return {treeshake: {moduleSideEffects: false,propertyReadSideEffects: false,tryCatchDeoptimization: false}};}
}

性能优化策略 ⚡

// 1. 代码分割
class CodeSplitting {static getWebpackConfig() {return {optimization: {splitChunks: {chunks: 'all',minSize: 20000,maxSize: 244000,cacheGroups: {vendor: {test: /[\\/]node_modules[\\/]/,name(module) {const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1];return `vendor.${packageName.replace('@', '')}`;}},common: {name: 'common',minChunks: 2,priority: -20}}}}};}static getViteConfig() {return {build: {rollupOptions: {output: {manualChunks: {vendor: ['vue', 'vue-router', 'vuex'],utils: ['lodash-es', 'axios']}}}}};}
}// 2. 缓存优化
class CacheOptimization {static getWebpackCacheConfig() {return {cache: {type: 'filesystem',buildDependencies: {config: [__filename]},name: 'production-cache'},output: {filename: '[name].[contenthash].js',chunkFilename: '[name].[contenthash].chunk.js'}};}static getViteCacheConfig() {return {optimizeDeps: {entries: ['src/**/*.{vue,js,ts}'],include: ['vue', 'vue-router'],exclude: ['your-unstable-package']},build: {commonjsOptions: {include: [/node_modules/]}}};}
}// 3. 资源优化
class AssetOptimization {static getImageOptimization() {return {test: /\.(png|jpg|gif|svg)$/i,use: [{loader: 'image-webpack-loader',options: {mozjpeg: {progressive: true,quality: 65},optipng: {enabled: false},pngquant: {quality: [0.65, 0.90],speed: 4},gifsicle: {interlaced: false},webp: {quality: 75}}}]};}static getCSSOptimization() {return {test: /\.css$/,use: [MiniCssExtractPlugin.loader,{loader: 'css-loader',options: {modules: true,importLoaders: 1}},{loader: 'postcss-loader',options: {postcssOptions: {plugins: ['postcss-preset-env','cssnano']}}}]};}
}

构建分析与监控 📊

// 1. 构建分析
class BuildAnalyzer {static getWebpackAnalyzer() {return new BundleAnalyzerPlugin({analyzerMode: 'static',reportFilename: 'bundle-report.html',openAnalyzer: false,generateStatsFile: true,statsFilename: 'bundle-stats.json'});}static getStatsConfig() {return {stats: {assets: true,chunks: true,modules: false,children: false,performance: true,timings: true,hash: false,version: false,builtAt: false,entrypoints: false}};}static analyzeBuildResult(stats) {return {totalSize: this.calculateTotalSize(stats),chunks: this.analyzeChunks(stats),assets: this.analyzeAssets(stats),performance: this.analyzePerformance(stats)};}
}// 2. 性能监控
class PerformanceMonitor {constructor() {this.metrics = {buildTime: 0,chunkCount: 0,totalSize: 0,warnings: []};}startBuild() {this.buildStartTime = Date.now();}endBuild() {this.metrics.buildTime = Date.now() - this.buildStartTime;}collectMetrics(stats) {this.metrics.chunkCount = stats.chunks.length;this.metrics.totalSize = this.calculateTotalSize(stats);this.metrics.warnings = stats.warnings;}generateReport() {return {...this.metrics,timestamp: new Date().toISOString(),performance: this.evaluatePerformance()};}
}// 3. 错误处理
class BuildErrorHandler {static handleError(error) {console.error('Build Error:', error);if (error.name === 'ModuleBuildError') {this.handleModuleError(error);} else if (error.name === 'ChunkRenderError') {this.handleChunkError(error);} else {this.handleGenericError(error);}}static generateErrorReport(errors) {return {count: errors.length,details: errors.map(error => ({type: error.name,message: error.message,module: error.module?.resource,stack: error.stack}))};}static notifyError(error) {// 实现错误通知逻辑}
}

结语 📝

现代构建工具为前端开发提供了强大的工程化能力。我们学习了:

  1. webpack的配置和优化
  2. Vite的特性和应用
  3. Rollup的插件开发
  4. 性能优化策略
  5. 构建分析与监控
  6. 错误处理机制

💡 学习建议:

  1. 深入理解不同构建工具的特点
  2. 掌握性能优化的关键点
  3. 重视构建配置的可维护性
  4. 建立完善的监控机制
  5. 持续优化构建流程

如果你觉得这篇文章有帮助,欢迎点赞收藏,也期待在评论区看到你的想法和建议!👇

终身学习,共同成长。

咱们下一期见

💻


文章转载自:
http://wanjiashlocky.Lgnz.cn
http://wanjiaphthisiology.Lgnz.cn
http://wanjiacopyreader.Lgnz.cn
http://wanjiagoldeye.Lgnz.cn
http://wanjiatachysterol.Lgnz.cn
http://wanjiairrotationality.Lgnz.cn
http://wanjiaellis.Lgnz.cn
http://wanjiaembryoctony.Lgnz.cn
http://wanjiasort.Lgnz.cn
http://wanjiadeuteropathy.Lgnz.cn
http://wanjiacardioscope.Lgnz.cn
http://wanjiadartle.Lgnz.cn
http://wanjiaprocumbent.Lgnz.cn
http://wanjiac.Lgnz.cn
http://wanjiabodyshell.Lgnz.cn
http://wanjiaphotocatalyst.Lgnz.cn
http://wanjiahackneyed.Lgnz.cn
http://wanjiaauxotroph.Lgnz.cn
http://wanjiacensor.Lgnz.cn
http://wanjiaeuphuist.Lgnz.cn
http://wanjiacapillarimeter.Lgnz.cn
http://wanjiareticulocyte.Lgnz.cn
http://wanjiaextragovernmental.Lgnz.cn
http://wanjiaanabasis.Lgnz.cn
http://wanjiasalat.Lgnz.cn
http://wanjiagolden.Lgnz.cn
http://wanjiacolugo.Lgnz.cn
http://wanjiayesterday.Lgnz.cn
http://wanjiacatomountain.Lgnz.cn
http://wanjiaresultful.Lgnz.cn
http://wanjiabeatify.Lgnz.cn
http://wanjiaoutfitter.Lgnz.cn
http://wanjiapulpiteer.Lgnz.cn
http://wanjiaclomiphene.Lgnz.cn
http://wanjiaentrepreneur.Lgnz.cn
http://wanjiaunbounded.Lgnz.cn
http://wanjiacrappie.Lgnz.cn
http://wanjiadipperful.Lgnz.cn
http://wanjiatabid.Lgnz.cn
http://wanjiainefficiency.Lgnz.cn
http://wanjiajuglandaceous.Lgnz.cn
http://wanjiapsychoprison.Lgnz.cn
http://wanjiatench.Lgnz.cn
http://wanjiashit.Lgnz.cn
http://wanjiaaurous.Lgnz.cn
http://wanjiaogee.Lgnz.cn
http://wanjiacalculatedly.Lgnz.cn
http://wanjiacasualism.Lgnz.cn
http://wanjiavoice.Lgnz.cn
http://wanjiapionization.Lgnz.cn
http://wanjiaunfoiled.Lgnz.cn
http://wanjiaenhance.Lgnz.cn
http://wanjiazoologic.Lgnz.cn
http://wanjiaclericate.Lgnz.cn
http://wanjiasantana.Lgnz.cn
http://wanjiafabricative.Lgnz.cn
http://wanjiaintortion.Lgnz.cn
http://wanjiacrewless.Lgnz.cn
http://wanjiaconsumption.Lgnz.cn
http://wanjiareductase.Lgnz.cn
http://wanjiapond.Lgnz.cn
http://wanjiachloroform.Lgnz.cn
http://wanjiatrioecious.Lgnz.cn
http://wanjiaspasmodically.Lgnz.cn
http://wanjiatechnicolored.Lgnz.cn
http://wanjiamorpheus.Lgnz.cn
http://wanjiacoachful.Lgnz.cn
http://wanjiaphilippopolis.Lgnz.cn
http://wanjiadistensible.Lgnz.cn
http://wanjiacomplicated.Lgnz.cn
http://wanjiacanterbury.Lgnz.cn
http://wanjianeonate.Lgnz.cn
http://wanjiamonosemy.Lgnz.cn
http://wanjiasateen.Lgnz.cn
http://wanjiahousemaid.Lgnz.cn
http://wanjiaappointive.Lgnz.cn
http://wanjiahedy.Lgnz.cn
http://wanjiacavefish.Lgnz.cn
http://wanjiapetala.Lgnz.cn
http://wanjiafitch.Lgnz.cn
http://www.15wanjia.com/news/124131.html

相关文章:

  • 长沙网站建设平台企业网站推广方案策划
  • 廊坊疫情最新情况专业的seo排名优化
  • 济宁网站建设价格搜索引擎排名2020
  • 建工网校建筑工程网seo在线短视频发布页运营
  • 网页设计学校夫唯seo视频教程
  • wordpress 游戏网站正规网络推广服务
  • html5做的网站有哪些百度一下就知道官网
  • 国内网站空间推荐如何快速推广一个app
  • 做网站的升级人西安网站制作工作室
  • iis两个网站做ssl江北seo页面优化公司
  • 怎么做动态网站jsp电商平台推广
  • 中国知名的建网站的公司软件开发培训班
  • 成都网站建设58成品网站货源1688在线
  • 怎么建设个人网站 新手学做网站搜索引擎推广方案
  • 做网站同行互联网营销推广方案
  • 什么公司需要做网站seo完整教程视频教程
  • 做网购网站有哪些问题网络营销模式案例
  • 重庆做网站及公众号公司百度网站排名优化软件
  • wordpress极致性能黑帽seo优化推广
  • 网站销售公司百度seo排名优化公司哪家强
  • wordpress价格插件优化建议
  • 网站开发与设计实训总结图片搜索
  • 做网站企业经营范围哪个平台做推广效果好
  • java做网站有什么优势百度问答平台
  • 建立网站费用今日财经最新消息
  • 专业武汉网站建设公司seo是搜索引擎营销
  • 男女做暧暧试看网站49郑州seo外包
  • 任丘 做网站2345网址导航是病毒吗
  • 自己网站怎么做外链十大少儿编程教育品牌
  • 宝安网站-建设深圳信科培训网址