cmux / koot

Koot是基于React和Koa的WEB全栈技术解决方案。
https://koot.js.org
Apache License 2.0
67 stars 13 forks source link

koot v1 beta 开发进度 #2

Open Diablohu opened 6 years ago

Diablohu commented 6 years ago
❗ 优先项
❕ 次级优先项
❔ 需讨论

核心

核心 处理配置

核心 打包

核心 生产模式

核心 开发模式

通用 PWA

通用 sp-css-loader

通用 sp-css-import

通用 koot-cli

通用 i18n

React

React 同构

React SPA

测试


原计划表

## 开发进度 #### 通用 - [x] 环境变量的三重优先原则 - 报错 - [x] 端口被占用 - [x] 启动服务器 - [x] 启动dev server - [x] 改名,备选: - `Kato` - `Koot` #### 打包 - [x] 更改 koot.build.js 格式 - 特殊入口 - [x] `client` - [x] `critical` - [x] `service-worker` 生成时忽略该出口 - [x] `polyfill` - [x] `service-worker` 生成时忽略该出口 - Webpack插件 - [x] 回调:开发模式打包后 - [x] 重写/优化 `enter.js` - [x] 整合 `koot.js` 和 `koot.build.js` - 启动时生成现有的 `koot.js` 格式的文件 - [x] 启用 `babel-loader` 缓存 #### 配置文件 - [x] 修改 `webpack` 的 loader 和 plugin 的配置 #### i18n - [x] 流程重写:支持直接打包模式 - [x] 开发模式:更新语言包文件时重新打包 - [x] 替换 `Object` 改为暂存形式 #### 相关log - [x] 开发环境:相关回调方法 log - 打包/build - [x] `before()` - [x] `after()` - client - [x] `before()` - [x] `after()` - [x] `onRouterUpdate()` - [x] `onHistoryUpdate()` - server - [x] `before()` - [x] `after()` - [x] `onRender()` - 端口冲突提示 - [x] 生产环境:服务器端口 - [x] 开发环境:服务器端口 - [x] 开发环境:`webpack-dev-server` 端口 #### 命令 - [x] `koot-build` - [x] `koot-dev` - [x] `--no-open` - [x] 等待服务器启动,而非服务器打包完毕 - [x] `--global`:挂载到全局 pm2 上 - [x] 无设定时随机端口 - [x] 可设定 `webpack-dev-server` 端口 - [x] `koot-analyze` - [x] `koot-start` - [x] `--no-build` #### 注入 / 模板 - [x] 重写模板读取和注入方式,支持 `.ejs` - 特殊注入 - [x] `htmlLang` - [x] `title` - [x] `metas` - [x] 多语言启用时相关的跳转 meta (https://support.google.com/webmasters/answer/189077?hl=en) - [x] `styles` - [x] `critical.css` - [x] 将 `critical` 移出,改用 `filecontent` 方式 - [x] 同构CSS - [x] `scripts` - [x] `redux store` - [x] `polyfill` - [x] `critical` - [x] 将 `critical` 移出,改用 `filecontent` 方式 - [x] 默认入口 - [x] PWA 自动注册 service-worker - [x] `manifest` - [x] `pathname::[filename]` - [x] `filecontent::[filename]` - [x] 有关 `metas` 的基础方案 - [x] `page-info()` - [x] minify #### 全局暴露 - [x] `store` - [x] `history` - [x] `localeId` - [x] `@pageinfo()` - [x] `stage` - [x] `env` - [x] `@load()` #### boilerplate - [x] 在基础 webpack 配置文件中以注释标明特殊入口 - [x] manifest - [x] `prettier` #### CLI - [x] 重写 #### `css-loader` - [x] 文件中不存在 `.component` 时,不做 class 名处理 - [x] 移至主包 / 改名 #### `@pageinfo()` - [x] 浏览器环境修改 metas:初次载入不修改,以保证和服务器结果一致 #### `@load()` - [x] 开发完成 - 考虑使用组件? #### PWA / service-worker - [x] 自动生成 `manifest` - [x] 请求超过一定时间后,强制返回缓存结果 - [x] 选项:仅缓存静态资源(忽略其他请求) #### React - 组件静态方法优化 - [x] 不再要求必须连接 Redux - [x] 方法名通过 `webpackDefinePlugin` 定义 - 同构 - [x] 针对 `react` v16.3 中 `context` 的调整 - [x] 缓存机制 - SPA - [x] `index.html` 中加入同构结果 - `extend` - `styles` - [x] 开发模式:`[filename]-[dir]-[hash]` #### 开发模式 - [x] 根据请求替换 `localhost:3001` - [x] hot-reload #### 其他 - [x] 自动复制静态文件 ## CLI 流程 1. 填写:项目名 2. 填写:项目介绍 3. 填写:作者email 4. 选择:基础框架 (react) 5. 选择:项目模式 (同构 | SPA | SPA+服务器|Static|H5) 6. 选择:是否启用多语言 (on) 7. 填写:打包结果目录 (./dist) 8. 下载:对应的 boilerplate 9. 创建 - manifest - koot.build.js - (多语言启用时) 语言包 10. 显示:后续操作指引

dongwenxiao commented 6 years ago

AMP 结合思考