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

编写网站保温杯软文营销300字

编写网站,保温杯软文营销300字,页面模板设计,哪里有建设公司官网无论在面试还是内部晋升#xff0c;webpack 构建优化方案 一直都是非常重要的部分。 webpack5构建加持 一、项目完成目标二、搭建项目1. 安装koa、koa/router #xff08;如果已经配置可路过#xff09;2. 创建入口文件3. 安装构建依赖4. 在项目根目录添加 .babelrc 文件5. …无论在面试还是内部晋升webpack 构建优化方案 一直都是非常重要的部分。 webpack5构建加持 一、项目完成目标二、搭建项目1. 安装koa、koa/router 如果已经配置可路过2. 创建入口文件3. 安装构建依赖4. 在项目根目录添加 .babelrc 文件5. 添加测试接口6. 启动服务7. 请求接口进行测试 三、配置 webpack1. 核心概念2. 在项目根目录创建 webpack.config.js 文件3. 测试构建4. 优化构建配置 四、路由自动注册1. 使用 require-directory2. 使用 require.contextwebpack功能 五、配置别名1. 使用 webpack 的别名功能2. 使用 module-alias 一、项目完成目标 支持 es6语法开发热更新webpack5 构建接口搭建路由合并路由自动注册添加项目规范配置自定义别名 二、搭建项目 # 创建项目目录 mkdir webpack5-node# 进入webpack5-node文件夹 cd webpack5-node# 初始化package.json npm init -y# 创建源码目录 mkdir src1. 安装koa、koa/router 如果已经配置可路过 yarn add koa koa/router2. 创建入口文件 touch src/app.js3. 安装构建依赖 yarn add -D webpack webpack-cli babel/node babel/core babel/preset-env babel-loader clean-webpack-plugin nodemon webpack-node-externals webpack-merge rimraf4. 在项目根目录添加 .babelrc 文件 // .babelrc {presets: [[babel/preset-env,{targets: {node: current}}]] }5. 添加测试接口 在 app.js 中添加测试接口由于已经配置了 babel 解析所以可以直接在 app.js 中写 es6语法 // app.js import Koa from koa import Router from koa/routerconst app new Koa() const router new Router()router.get(/, async ctx {ctx.body {status: 200,message: success,data: {nickname: Simon,title: 前端工程师,content: webpack5构建node应用}} })app.use(router.routes()).use(router.allowedMethods())const port 3000 app.listen(port, () console.log(服务启动在 ${port} 端口))6. 启动服务 npx babel-node src/app.js7. 请求接口进行测试 三、配置 webpack 中文文档 1. 核心概念 entry入口指示 webpack 应该使用哪个模块默认值是 ./src/index.jsoutput输出output 属性告诉 webpack 在哪里输出它所创建的 bundle默认值是 ./dist/main.jsloaderloader 负责完成项目中各种各样资源模块的加载plugins插件用来解决项目中除了资源模块打包以外的其他自动化工作。包括打包优化资源管理注入环境变量mode模式通过选择 development, production 或 none 之中的一个来设置 mode 参数你可以启用 webpack 内置在相应环境下的优化。其默认值为 production 2. 在项目根目录创建 webpack.config.js 文件 // webpack.config.js const { DefinePlugin } require(webpack) const nodeExternals require(webpack-node-externals) const { CleanWebpackPlugin } require(clean-webpack-plugin)module.exports {// 打包编译为某一端侧的可使用代码 默认值web https://webpack.docschina.org/configuration/target/target: node,// 打包模式可选择值development、productionmode: development,// 控制是否生成以及如何生成 source map。 https://webpack.docschina.org/configuration/devtool/#rootdevtool: eval-cheap-source-map,// 打包模块入口文件entry: {server: ${process.cwd()}/src/app.js},// 打包后的输入文件output: {filename: [name].bundle.js,path: ${process.cwd()}/dist},// 匹配解析规则module: {rules: [{test: /\.(js|jsx)$/,use: {loader: babel-loader},exclude: [${process.cwd()}/node_modules]}]},// 构建过程中使用的插件plugins: [new CleanWebpackPlugin(),new DefinePlugin({process.env: {NODE_ENV: JSON.stringify(process.env.NODE_ENV production ||process.env.NODE_ENV prod? production: development)}})],// 防止第三方依赖被打包externals: [nodeExternals()] }3. 测试构建 npx webpack构建成功 ❓ 在实际开发中可能会存在开发环境和生产环境的构建所以单凭一个配置还不能达到实际的需求接下来对开发环境和生产环境分别配置。 在项目根目录创建 config 文件并创建三个文件分别是 webpack.config.base.js 文件存放开发环境和生产环境都是需要的构建配置webpack.config.dev.js 文件存放开发环境的构建配置webpack.config.prod.js 存放生产环境的构建配置 4. 优化构建配置 mode 独立于构建环境开发环境为(development)、生产环境为(production)devtool 只有在开发环境下才会存在stats 属性让你更精确地控制打包后的信息该怎么显示 【Stats 对象】 Tips 由于每个开发环境和生产环境都是独立的构建配置所以要在构建时要合并基础配置 安装 webpack-merge 合并构建配置 npm i -D webpack-merge 优化基础构建配置 webpack.config.base.js // config/webpack.config.base.js const { DefinePlugin } require(webpack) const nodeExternals require(webpack-node-externals) const { CleanWebpackPlugin } require(clean-webpack-plugin)module.exports {// 打包编译为某一端侧的可使用代码 默认值web https://webpack.docschina.org/configuration/target/target: node,// 打包模式可选择值development、production// mode: development,// 控制是否生成以及如何生成 source map。 https://webpack.docschina.org/configuration/devtool/#root// devtool: eval-cheap-source-map,// 打包模块入口文件entry: {server: ${process.cwd()}/src/app.js},// 打包后的输入文件output: {filename: [name].bundle.js,path: ${process.cwd()}/dist},// 匹配解析规则module: {rules: [{test: /\.(js|jsx)$/,use: {loader: babel-loader},exclude: [${process.cwd()}/node_modules]}]},// 构建过程中使用的插件plugins: [new CleanWebpackPlugin(),new DefinePlugin({process.env: {// 设置环境变量 NODE_ENVNODE_ENV: JSON.stringify(process.env.NODE_ENV production ||process.env.NODE_ENV prod? production: development)}})],// 防止第三方依赖被打包externals: [nodeExternals()] }开发环境的构建配置 webpack.config.dev.js // config/webpack.config.dev.js const { merge } require(webpack-merge) const baseWebpackConfig require(./webpack.config.base)const webpackConfig merge(baseWebpackConfig, {devtool: eval-cheap-source-map,mode: development,// 是否添加关于子模块的信息。stats: { children: false } })module.exports webpackConfig生产环境的构建配置 webpack.config.prod.js 生产环境构建时要进行代码压缩需要安装 terser-webpack-plugin 命令npm i -D terser-webpack-plugin // config/webpack.config.prod.js const { merge } require(webpack-merge) const TersetWebpackPlugin require(terser-webpack-plugin) const baseWebpackConfig require(./webpack.config.base)const webpackConfig merge(baseWebpackConfig, {devtool: eval-cheap-source-map,mode: production,stats: { children: false },// 优化配置optimization: {// 压缩配置minimize: true,minimizer: [new TersetWebpackPlugin()],// 分块策略splitChunks: {// 缓存组 https://webpack.docschina.org/plugins/split-chunks-plugin/#splitchunkscachegroupscacheGroups: {commens: {name: commons,chunks: initial,minChunks: 3,enforce: true}}}} })module.exports webpackConfig添加构建脚本命令 设置环境变量 NODE_ENV由于各环境配置的差异问题cross-env 可以有效的解决跨平台设置环境变量的问题 它是运行跨平台设置和使用环境变量(Node 中的环境变量)的脚本。 安装命令npm i -D cross-env 安装成功后配置构建命令 在 package.json 的 scripts 中添加如下命令 build: cross-env NODE_ENVprod webpack --config config/webpack.config.prod.js, dev: cross-env NODE_ENVdev nodemon --exec babel-node --inspect src/app.js,启动开发环境服务 npm run dev运行之后的效果图如下 启动编译构建命令 npm run build运行效果如下图 查看 dist 文件夹下被编译后的文件 代码被压缩成了一整行 四、路由自动注册 1. 使用 require-directory 在 src 文件夹下新建 routes 和 api 两文件夹 routes 是集成当前项目的所有路由 api 文件是存放项目的所有接口文件 安装 require-directory这个包的作用可以将一个目录下的所有模块来自动注册Koa应用的路由从而避免手动导入和注册每个路由文件。 npm i require-dirctory创建 src/api/v1 下创建 demo.js 和 test.js 文件 // src/api/v1/demo.js import Router from koa/routerconst router new Router({ prefix: /api/v1 })router.get(/demo, async ctx {ctx.body {status: 200,message: message,data: {file: demo.js,title: webpack 5 构建node应用,content: koa koa/router require-dirctory}} })export default router// src/api/v1/test.js import Router from koa/routerconst router new Router({ prefix: /api/v1 })router.get(/test, async ctx {ctx.body {status: 200,message: message,data: {file: test.js,title: webpack 5 构建node应用,content: koa koa/router require-dirctory}} })export default router配置 src/routes/index.js // src/routes/index.js import Router from koa/router import requireDirectory from require-directory// 接口存放目录路径 const apiDirectory ${process.cwd()}/src/apifunction initLoadRoutes(app) {requireDirectory(module, apiDirectory, {visit({ default: router }) {if (router instanceof Router) {app.use(router.routes())}}}) }export default initLoadRoutes修改 src/app.js 文件 // src/app.js import Koa from koa import initLoadRoutes from ./routes/indexconst app new Koa()// 在入口文件中执行 initLoadRoutes(app)const port 3002 app.listen(port, () console.log(服务启动在${port}端口))测试请求 至此自动注册路由就大功告成了后面我们定义接口的时候就用手动一个一个的引入只管往 api 文件夹里写接口就好了。 2. 使用 require.contextwebpack功能 require 依赖管理 eg.: . ├── modules │ ├── adminRouter.js │ ├── commentsRouter.js │ ├── contentRouter.js │ ├── loginRouter.js │ ├── publicRouter.js │ ├── userRouter.js │ └── wxRouter.js └── routes.js目标使用 routes.js 来动态加载 modules 目录中的 .js 的路由文件其他的比如vuex、vue-router 等场景都适合。 上代码 // routes.jsimport combineRoutes from koa-combine-routers// 加载目录中的Router中间件 const moduleFiles require.context(./modules, true, /\.js$/)// reduce方法去拼接 koa-combine-router所需的数据结构 Object[] const modules moduleFiles.keys().reduce((items, path) {const value moduleFiles(path)items.push(value.default)return items }, [])export default combineRoutes(modules)使用方法 在 index.js 入口文件中 import router from ./routes/routesapp.use(router())两个小知识 使用 koa-combine-routers 可以合并多个路由使用 require.context 可以动态引入多个文件 五、配置别名 在日常开发中我们引入一些封装好的方法或者模块总是写很长很长的文件路径比如 require(../../../../some/very/deep/module) import format from ../../../../utils/format 为了告别这种又臭又长的路径我们就可以使用一些解放生产力的方法了哈哈哈哈不会偷懒的程序员不是好程序员 配置别名有两种方式一种是 webpack另一种是通过 module-alias 包 1. 使用 webpack 的别名功能 官方文档 resolve.alias 配置方式非常的简单方便 const path require(path);module.exports {//...resolve: {alias: {: path.resolve(__dirname, src/),// ...},}, };2. 使用 module-alias 安装依赖 npm i module-alias在 package.json 中添加自定义别名 _moduleAliases: {: ./src,controller: ./src/controller }在入口文件的顶部引入 module-alias/register也就是在 app.js 的顶部引入 // src/app.js require(module-alias/register) ...配置成功后将 /src/api/v1 内的逻辑全部提到 src/controller 中使用别名引入 controller 中文件修改后如下 // src/api/v1/demo.js import Router from koa/router import DemoController from controller/demo/const router new Router({ prefix: /api/v1 })router.get(/demo, DemoController.demo)export default router// src/api/v1/test.js import Router from koa/router import TestController from controller/testconst router new Router({ prefix: /api/v1 })router.get(/test, TestController.test)export default router// src/controller/v1/demo.js class DemoController {constructor() {}async demo(ctx) {ctx.body {status: 200,message: message,data: {file: test.js,title: webpack 5 构建node应用,content: koa koa/router require-dirctory}}} }export default new DemoController()// src/controller/v1/test.js class TestController {constructor() {}async test(ctx) {ctx.body {status: 200,message: message,data: {file: test.js,title: webpack 5 构建node应用,content: koa koa/router require-dirctory}}} }export default new TestController()测试接口 如果 git commit 时 lint-staged 没有通过 上述问题是因为 eslint 发现 controller/* 开头的在 node_modules 中没有找到所以配置 eslint 就好了 // src/eslintrc.js module.exports {//...rules: {import/no-unresolved: [2, { ignore: [^/, controller] }] // 和controller 是设置的路径别名} }这个问题是由于 constructor 构造函数为空引起的在 eslintrc.js 添加配置即可 no-empty-function: [error, { allow: [constructors] }] 希望上面的内容对你的工作学习有所帮助欢迎各位一键三连哦 各位 加油 ✨ 原创不易还希望各位大佬支持一下 \textcolor{blue}{原创不易还希望各位大佬支持一下} 原创不易还希望各位大佬支持一下 点赞你的认可是我创作的动力 \textcolor{green}{点赞你的认可是我创作的动力} 点赞你的认可是我创作的动力 ⭐️ 收藏你的青睐是我努力的方向 \textcolor{green}{收藏你的青睐是我努力的方向} 收藏你的青睐是我努力的方向 ✏️ 评论你的意见是我进步的财富 \textcolor{green}{评论你的意见是我进步的财富} 评论你的意见是我进步的财富
http://www.tj-hxxt.cn/news/141351.html

相关文章:

  • 如何选择模板网站建设华东网站建设
  • 网站外包公司百度推广服务
  • 手机网站建设 jz.woonl娄底高端网站建设
  • 做视频网站都需要什么软件下载江西省赣州市地图
  • 做网站的出路如何在租用的服务器上部署自己的网站 mysql
  • 网站背景图片怎么做医院如何做网站策划
  • 给别人做网站去掉版权个人网站备案多少钱
  • 创意设计公司网站网站建设用到什么软件
  • 工程建设信息网站资质公告大专ui设计师工资一般多少
  • 大连鼎信网站建设网站域名怎么快速备案价格
  • 宿州企业官方网站建设大连网站建设方案咨询
  • vi设计概念google seo是什么意思
  • 北京网站建设优化用阿里巴巴店铺做公司网站怎么样
  • 网站是每年都要付费吗网站建设之数据信息的保密性
  • 淮南网络运营公司西安网站建设优化
  • 石家庄网站免费制作人力资源信息管理平台
  • 网站开发是前端还是后台wordpress主题极简
  • 用什么软件快速做网站视频直播间话术
  • 网站空间购买北京网站设计专业实验室建设
  • 免费建英文网站新浪体育世界杯
  • 开网店的基础知识网站seo外链接
  • 巴中免费网站建设高师本科化学实验教学体系建设与创新型人才培养 教学成果奖申报网站
  • 哪个网站能免费下载电影广告公司电话号码
  • 政务大厅网站建设管理制度快速开发小程序公司
  • 公司注册信息查询重庆seo搜索引擎优化平台
  • 如何做招聘网站的评估做网站能注册账号的
  • 网站建设 万户建站跨境浏览网站
  • app那个网站开发比较好阿里巴巴网页设计教程
  • 网络推广 网站制作电影网站源码系统
  • 微信开发网站建设西安公司最新招聘信息