ismism/readme.md

123 lines
4.5 KiB
Markdown
Raw Permalink Normal View History

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` 对操作组合做请求
* `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, 微信浏览器