@webmiyang/elpis
v1.0.0
Published
账号:zhexuanquanzhan18_000031 密码:4fvnqk
Readme
账号:zhexuanquanzhan18_000031 密码:4fvnqk
问题总结
1、vscode 插件占用c盘空间,通过应用的--》属性 --》快捷方式-》添加--extensions-dir "D:\vscode-plugin" 改变虚拟存储空间 2、git 提交规范,原视频用的是ghooks(版本太老目前已停止维护),改为通过husky 配置提交前校验 2-1、git提交规范 : feat: 新增功能 fix: 修补 bug docs: 文档 style: 格式(不影响代码运行的变动) refactor: 重构 (既不新增功能,也不是修改bug的代码改动) test: 增加测试 chore: 构建工具或辅助工具的变动
3、获取环境变量时 process.env._ENV 可能会出现不等的字符串 例如:在命令行中获取 process.env._ENV 为 dev 时,返回的是 'dev' 而不是 dev 解决方法: 在命令行中使用 --env = dev 来指定环境变量 不要有空格不要加单引号'' 如果有空格获取时需要使用 trim() 方法去掉空格
4、进一步完善全局中间件
进行路由页面模板渲染 先进入全局中间件=》静态文件服务=》模板渲染 用到了koa-nunjucks-2 中间件
例如:/page1 会先进入全局中间件 获取路由参数 =》静态文件服务 =》找到对应模板 进行渲染=》返回页面
例如:/static/normalize.css 会先进入静态文件服务 =》返回对应文件 用到了koa-static 中间件
4-1、 log4js 日志中间件 用于记录路由请求日志
本地开发环境 会记录到 console 中
其他环境 会记录到 .log 文件中保存到logs目录下
5、补充全局中间件 错误处理中间件 用于处理路由中间件中抛出的错误 参数校验中间件 用于校验路由参数是否符合路由定义 签名验证中间件 用于校验路由参数中的签名是否正确
6、工程化思想 6-1、整体(业务页面)开始 输入(业务文件vue,react,js,ts,css,less,png等)--》 处理(通过模板引擎解析编译、分包、压缩)--》 输出(输出符合项目要求的静态文件模板文件或者html)--》 部署(通过koa服务或者其他服务进行访问)
6-1-1、输入(业务文件vue,react,js,ts,css,less,png等)--》 清晰的项目结构 例如: common | -- utils.js store | -- index.js entry1 | -- entry1.js | -- entry1.vue entry2 | -- entry2.js | -- entry2.vue 6-1-2、处理(通过模板引擎解析编译、分包、压缩)--》 用到了打包工具 webpack vite 或 rollup 等,他们的功能就是将项目中的业务文件打包成静态文件模板文件或者html 流程就是用node运行一个js入口文件 这个文件引入打包工具并按工具配置打包规则,然后根据规则进行打包 6-1-2-1、入口文件制定基础的打包规则 基础的配置分为: 1、entry 入口文件 用于指定打包的入口文件 webpack和vite都支持多入口打包,每个入口文件对应一个输出文件 vite默认是index.html需要用rollup原生来支持多入口打包 2、output 输出文件 用于指定打包后的文件输出的目录 3、loader 解析文件 用于指定不同的文件类型用不同的loader解析 4、plugins 插件 用于指定打包过程中需要使用的插件 5、resolve 解析文件 用于哪些文件需要使用loader解析 还可以配置地址映射别名alias vite默认配置了别名,不需要在resolve中配置别名
6-1-2-2、模板引擎解析编译 不同的文件类型用不同的loader解析 例如:
webpack 配置文件 webpack.config.js 中配置了模板引擎的解析编译 还要配置plugins 中的 vue-loader 插件
例如:
module: {
rules: [
{
test: /\.vue$/,
use: 'vue-loader'
}
]
},
vite基座是rollup 与webpack不同的是vite不需要在plugins中配置vue-loader插件,因为它默认配置了模板引擎的解析编译插件,的插件需要在vite.config.js中配置
plugins: [
vue()
]
6-1-2-2、分包
1、webpack 配置文件 webpack.config.js 中配置了分包的规则 例如:
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
parallel: true,
cache: true,
sourceMap: true,
exclude: /node_modules/
})
]
}
2、vite 配置文件 vite.config.js 中配置了分包的规则 例如:
build: {
rollupOptions: {
output: {
manualChunks: ['vue']
}
}
}
6-1-2-3、多线程打包
1、webpack 配置文件 webpack.config.js 中配置了多线程打包的规则 例如:
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
parallel: true,
cache: true,
sourceMap: true,
exclude: /node_modules/
})
]
}
2、vite 配置文件 vite.config.js 中配置了多线程打包的规则 例如:
build: {
rollupOptions: {
output: {
manualChunks: ['vue']
}
}
}
6-1-2-4、压缩
1、webpack 配置文件 webpack.config.js 中配置了压缩的规则 例如:
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
parallel: true,
cache: true,
sourceMap: true,
exclude: /node_modules/
})
]
}
2、vite 配置文件 vite.config.js 中配置了压缩的规则 例如:
build: {
minify: 'terser',
minifyOptions: {
compress: {
drop_console: true,
drop_debugger: true,
},
},
}6-1-3、输出(输出符合项目要求的静态文件模板文件或者html)--》 output 输出: { path: path.resolve(__dirname, 'dist'), filename: 'name].[contenthash].js', clean: true, }
7、工程化-本地开发搭建 之前的打包输出是静态文件模板文件或者html,它是一个固定的文件,但是本地开发修改比较频繁,不能每次修改都要打包一次在重新启动,这就需要一个热更新功能,基本原理就是有一个能实时访问静态文件的服务,这个服务能监听业务文件的修改也能通知产物文件。 这个本地服务器的作用 1、监控业务文件(原始的代码文件)是否有变化 2、与(内存里的)产物保持一致,通知重新加载 3、本地提供内容来保存解析引擎编译之后的产物 4、提供一个本地的http服务,浏览器可以通过这个服务来访问本地的文件(这段代码会注入到产物中使其引用的文件变为一个http服务也就是本地内存里的静态文件)
8、封装npm包 用link先链接到本地的npm包目录 然后在项目中引入这个npm包 然后在项目中使用这个npm包 问题1、有路径问题 项目文件解析加载时 会报错 因为项目文件的路径是相对于项目根目录的 而npm包的路径是相对于项目根目录的 所以需要在项目中配置一个别名 比如: resolve: { alias: { '@': path.resolve(__dirname, 'src'), }, }
1、model配置问题 怎样实现权限分配? 都是写进文件的 系统也都是通过文件解析的数据 这种思想最终的落地方式还是通过库表来配合实现吗?
2、感觉也是一大块内容 库表设计应该也需要同样的抽象思维,大家也缺少这样的思路, 比如这个配置怎么分表还是用一个表一个打json解析?还是由页面自由配置?
3、低代码的实现是不是就是这样思想的最终体现? 只不过把model.js文件用交互的拖拉拽实现了?
4、能不能把这种思想做成一个开箱即用的低代码平台框架? 有没有现成的框架? 因为沉淀模型的基础也是需要进行开发的,比如低代码的组件库、低代码的配置文件解析器以及基础的库表等。
