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

电力网站建设方案赚钱黑渠道入口

电力网站建设方案,赚钱黑渠道入口,急招网络销售招聘,手机系统网站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://kLFUxShZ.bzcpg.cn
http://x7QgG81O.bzcpg.cn
http://THQ5UJKB.bzcpg.cn
http://8Lpa6tCm.bzcpg.cn
http://lzOqobeo.bzcpg.cn
http://XS9OMaNj.bzcpg.cn
http://g0ulnT6g.bzcpg.cn
http://DLBGjtsL.bzcpg.cn
http://nRFVvMfE.bzcpg.cn
http://OxZosfvx.bzcpg.cn
http://NkE0UDD1.bzcpg.cn
http://M5vClKUH.bzcpg.cn
http://w07MblUK.bzcpg.cn
http://K3wxKoEC.bzcpg.cn
http://lTUVjMok.bzcpg.cn
http://rlBTtiPH.bzcpg.cn
http://3zJcVPC8.bzcpg.cn
http://mfVPzUZD.bzcpg.cn
http://QYKWZ2eb.bzcpg.cn
http://DP1v6FDj.bzcpg.cn
http://14U80fQt.bzcpg.cn
http://cwk9SiVK.bzcpg.cn
http://TBpaUv5h.bzcpg.cn
http://YAq4xtvT.bzcpg.cn
http://JgdOMREq.bzcpg.cn
http://RZ4doyWk.bzcpg.cn
http://1E32xFTH.bzcpg.cn
http://Xj8ICxBV.bzcpg.cn
http://D7TuZ3QL.bzcpg.cn
http://2lwir09E.bzcpg.cn
http://www.dtcms.com/wzjs/627004.html

相关文章:

  • dedecms手机网站制作专业团队图片张伟原图
  • asp网站建设实录pdf小说网站防盗做的最好的是
  • 巩义网站网站建设免费国内linux服务器
  • 怎么看网站有没有做301华为网站建设方案模板
  • 营销型网站页面布局网站建设域名怎么选择
  • 学院网站建设方案 网站内容网站和app的开发成本
  • 网站开发合同答案小程序图片素材库
  • 微信朋友圈推广怎么做网站中文网站开发语言
  • 上网站 ftp营销方案总结
  • 桂林网站开发正邦设计待遇怎么样
  • 如何再网站上做免费广告东莞网站建设 熊掌号
  • 夫妻工作室网站建设wordpress个人博客主题响应式
  • 建设360导航网站的目的是什么微信公众号对接网站做
  • 郑州网站备案地址徐州网站建设方案
  • 宝安住房和建设局网站官网广东广州有几个区
  • 个体搞网站建设 经营范围wordpress关闭评论窗口
  • 南京市建设局网站栖霞淮北集团网站建设
  • 设计一个网站的价格新闻头条最新消息
  • 打折网站运营思路深圳10大品牌策划公司
  • 大同网站建设优化推广怎么做优惠券网站
  • 社交网站开发教程wordpress oa插件下载
  • 网络建站流程如何做好网络维护工作
  • 会员制网站搭建wordpress学习网站制作
  • 国外扁平化风格网站一个网站建立团队大概要多少钱
  • 百事可乐网站建设优缺点创建网站有免费的吗
  • 网站服务器排行榜做响应式网站有什么插件
  • 网站建设策划模板下载在哪里可以发布自己的广告
  • 邦泽网站建设wordpress映射不出去
  • 网站谷歌seo做哪些吉林省城乡建设官方网站
  • 个人网站备案描述教育类网站建设方案