2023-11-01 12:29:41 +08:00
|
|
|
|
# 【从零开发】主义主义网站
|
2023-11-01 10:55:51 +08:00
|
|
|
|
|
2023-12-14 10:14:19 +08:00
|
|
|
|
## [系列视频](https://space.bilibili.com/483417795/video)
|
|
|
|
|
|
|
|
|
|
**每个视频对应的代码版本**:
|
|
|
|
|
[https://gitlab.com/728/ismism/-/issues/45](https://gitlab.com/728/ismism/-/issues/45)
|
2023-12-11 14:26:44 +08:00
|
|
|
|
|
2023-12-14 10:14:19 +08:00
|
|
|
|
# 代码结构 `ismism`
|
|
|
|
|
|
|
|
|
|
开发环境 - 写的代码 `ismism.ts`
|
|
|
|
|
运行环境 - 跑的代码 `ismism`
|
2023-12-11 14:26:44 +08:00
|
|
|
|
|
|
|
|
|
编译环境 =>编译生成=> 运行环境 =>部署=> 运行(服务器端 + 浏览器端)
|
2023-11-04 16:55:00 +08:00
|
|
|
|
|
2023-12-04 13:32:36 +08:00
|
|
|
|
* `ismism.ts` 编译环境
|
2023-12-11 14:26:44 +08:00
|
|
|
|
* `cli` 命令 `command line interface`
|
2023-12-04 13:32:36 +08:00
|
|
|
|
- `sendsms.ts` 发送测试短信
|
2023-12-11 14:26:44 +08:00
|
|
|
|
- `bundle.ts` 编译 .ts 并打包 .js `build .ts and bundle .js`
|
|
|
|
|
- `build.zsh` 编译生成运行环境
|
2023-12-04 13:32:36 +08:00
|
|
|
|
* `src` 源代码 `source`
|
|
|
|
|
* `ont` 基础操作 `ontic`
|
|
|
|
|
- `base.ts` 进制转换
|
|
|
|
|
- `utc.ts` 时间格式 `Universal Time Convention`
|
|
|
|
|
- `crypt.ts` 签名验证 `cryptography`
|
|
|
|
|
- `jwt.ts` 身份验证 `JSON Web Token`
|
|
|
|
|
- `adm.ts` 行政区划 `administrative region`
|
|
|
|
|
- `json.ts` JSON数据声明
|
|
|
|
|
* `eid` 核心操作 `eidetic`
|
|
|
|
|
- `typ.ts` 数据类型声明 `type`
|
|
|
|
|
- `db.ts` 数据库初始化与数据操作类型声明 `database`
|
|
|
|
|
- `is.ts` 数据定义与检查
|
|
|
|
|
- `id.ts` 实体数据操作 `identity`
|
|
|
|
|
- `usr.ts` 用户数据操作 `user`
|
|
|
|
|
- `soc.ts` 俱乐部数据操作 `sociation` `social`
|
|
|
|
|
- `agd.ts` 活动数据操作 `agenda`
|
|
|
|
|
- `rec.ts` 记录数据操作 `record` - `credit` `debit` `earn`
|
|
|
|
|
- `msg.ts` 文章数据操作 `message` - `wsl` `lit`
|
|
|
|
|
- `aut.ts` 权限数据操作 `author` `authority`
|
|
|
|
|
* `pra` 业务操作 `praxic`
|
|
|
|
|
- `can.ts` 操作权限
|
|
|
|
|
- `doc.ts` 数据组合 `document`
|
|
|
|
|
- `que.ts` 查询接口 `query` `HTTP GET` 对数据组合做请求
|
|
|
|
|
- `pas.ts` 用户登陆 `pass` (的操作组合)
|
|
|
|
|
- `pre.ts` 创建操作 `pre-data` `prepare` (的操作组合)
|
|
|
|
|
- `put.ts` 更新操作 `put-data`(的操作组合)
|
|
|
|
|
- `pos.ts` 请求接口 `post` `HTTP POST` 对操作组合做请求
|
2023-12-13 14:46:33 +08:00
|
|
|
|
* `ser.ts` 服务 `serve`
|
2023-12-04 13:32:36 +08:00
|
|
|
|
* `tst` 测试代码 `tests`
|
|
|
|
|
* `ui` 图形界面 `graphical user interface`
|
|
|
|
|
* `index` UI声明(HTML/CSS)
|
|
|
|
|
- `index.html` UI入口
|
|
|
|
|
- `template.html` UI元素
|
|
|
|
|
- `style.css` UI样式
|
|
|
|
|
* `bind` UI定义(TS/JS)绑定服务器端与浏览器端的数据
|
2023-12-11 14:26:44 +08:00
|
|
|
|
- `fetch.ts` 绑定数据
|
2023-12-04 13:32:36 +08:00
|
|
|
|
- `bind.ts` 绑定UI入口
|
|
|
|
|
- `template.ts` 绑定UI元素
|
|
|
|
|
* `ui.ts` 打包UI `ui bundle`
|
2023-12-11 14:26:44 +08:00
|
|
|
|
* `cli` 命令(运行环境)(服务器端)
|
|
|
|
|
- `*ser.js` 服务 `serve`
|
|
|
|
|
- `db.zsh` 启动数据库
|
|
|
|
|
- `stop.zsh` 停止服务
|
|
|
|
|
- `start.zsh` 启动服务
|
|
|
|
|
* `*ui` 图形界面(运行环境)(浏览器端)
|
|
|
|
|
- `*index.html` 网页界面
|
2023-12-04 13:32:36 +08:00
|
|
|
|
* `mongod.service` `mongod.yaml` 数据库配置(服务器端)
|
|
|
|
|
* `nginx.conf` 端口配置(服务器端)
|
2023-11-04 16:55:00 +08:00
|
|
|
|
|
2023-12-14 10:14:19 +08:00
|
|
|
|
## 开发环境
|
|
|
|
|
|
|
|
|
|
`deno` 开发工具
|
|
|
|
|
|
|
|
|
|
* `deno lsp` `deno lint` `deno check` 声明检查 类型检查 形式检查
|
|
|
|
|
- 就代码**本身**做检查 `verifying code as such`(静态检查)
|
|
|
|
|
- 不运行代码,没有输入数据,没有输出结果,只检查代码的形式(形式推理)
|
|
|
|
|
* `deno compile` `deno bundle` 编译打包
|
|
|
|
|
- 把带有类型声明的 `.ts` `typescript` 文件编译打包成没有类型声明,浏览器可直接运行的 `.js` `javascript`
|
|
|
|
|
- 在通过静态检查的前提下,把代码转化成直接可运行的状态
|
|
|
|
|
- 所有的类型声明,以及与运行状态无关的代码,都会被清除掉
|
|
|
|
|
- 代码的形式会被*扬弃*
|
|
|
|
|
* `deno eval` `deno test` `deno run` 运行代码 测试代码 执行功能
|
|
|
|
|
- 根据输入,**运行**程序,检查定义状态和内容(动态检查)
|
|
|
|
|
- 内容体现为运行**过程**中展开的数据**状态**
|
|
|
|
|
- **功能**体现为用户与程序的**交互**
|
|
|
|
|
- 程序的执行,向用户*敞开*
|
|
|
|
|
|
|
|
|
|
## 运行环境
|
|
|
|
|
|
|
|
|
|
### 服务器环境
|
|
|
|
|
|
|
|
|
|
`mongodb` 数据库
|
|
|
|
|
|
|
|
|
|
* 快速**高效**的读写数据
|
|
|
|
|
* `127.0.0.1:27017`
|
|
|
|
|
- `127.0.0.1` = `localhost` = 本地
|
|
|
|
|
- 只有本地服务能访问的端口
|
|
|
|
|
- `mongod --config mongod.yaml`
|
|
|
|
|
|
|
|
|
|
`ser.js` 数据服务
|
|
|
|
|
|
|
|
|
|
* 定义和提供数据操作和功能
|
|
|
|
|
* `127.0.0.1:728`
|
|
|
|
|
- `127.0.0.1` = `localhost` = 本地
|
|
|
|
|
- 只有本地服务能访问的端口
|
|
|
|
|
- `deno run --allow-net --allow-read cli/ser.js`
|
|
|
|
|
|
|
|
|
|
`nginx` 服务代理
|
|
|
|
|
|
|
|
|
|
* 高效、**安全**地处理请求
|
|
|
|
|
- 断然地*否定*不正当的请求
|
|
|
|
|
- 对外防御数据库、服务不设防的状态
|
|
|
|
|
* `0.0.0.0:80`
|
|
|
|
|
- `0.0.0.0` = `localhost` = 公网开放端口
|
|
|
|
|
- 对外敞开的端口
|
|
|
|
|
- `nginx -p . -c nginx.conf`
|
|
|
|
|
* `/` 主页 `index.html`
|
|
|
|
|
* `/q` 查询接口,如 `/q?que="usr"&usr=728`
|
|
|
|
|
* `/p` 数据接口
|
|
|
|
|
|
|
|
|
|
### 用户环境
|
2023-11-01 10:55:51 +08:00
|
|
|
|
|
2023-12-14 10:14:19 +08:00
|
|
|
|
网页浏览器,如 Chrome, Firefox, Safari, 微信浏览器
|