Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
xjq7 committed Sep 25, 2024
1 parent 6feee73 commit 25a3e69
Show file tree
Hide file tree
Showing 4 changed files with 198 additions and 1 deletion.
4 changes: 4 additions & 0 deletions docs/.vitepress/sidebar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ export default [
text: '前端工程化',
link: '/Knowledge/Engineer',
},
{
text: '扫盲',
link: '/Knowledge/Literacy',
},
],
},
{
Expand Down
11 changes: 10 additions & 1 deletion docs/Knowledge/Debugger.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,17 @@ Android 使用 Charles 抓包

将线上 H5 里的资源代理到本地启动的服务上, 直接本地调试

#### https 证书安装

android 端需要安装 CA 证书, 像华为从设置里搜索 证书 找到 CA 证书安装, 小米安装证书时, 凭据用途选择 vpn和应用, 且提示包含 CA 证书即可

如果安装了证书, 浏览器里仍然提示证书无效时跟浏览器有关系, 可以安装一个三方浏览器像 chrome, edge 来调试



#### WIFI 代理配置

我这里演示的是 ios 端的代理配置
(android 端证书需要安装在系统目录下, 直接用设置里的证书安装是装在用户目录, 还是没法抓包和代理 https 请求)

1. 先将 WIFI 代理配置好

Expand Down
183 changes: 183 additions & 0 deletions docs/Knowledge/Literacy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
[[toc]]

## 严格模式

严格模式是引入一些限制来提高代码安全性和可维护性

- 对于一些静默错误, 严格模式下会直接抛出错误
- 严格模式修复了一些 Js 引擎难以执行优化的缺陷, 提升了性能
- 严格模式禁用了新式语法

具体规则:

- 禁止

## tsconfig.json

```json
// 当前配置为默认值
{
// 相对路径或绝对路径的文件列表, 指定 tsc 编译器需要编译的文件列表
"files": ["dir1/index.ts"],

// 需要支持的文件列表, 支持 glob 通配符
"include": ["dir2/**/*"],

// 指定排除的文件列表, 但不能排除 files 直接指定的文件, 默认包含 node_modules
"exclude": ["dir2/index2.ts"],

// 从另一个文件继承配置
"extends": "",

// 编译配置
"compileOptions": {
"target": "es5",

"jsx": "preserve",
// 指定生成目标为 react JSX 时使用的 JSX 工厂函数
"jsxFactory": "React.createElement",

// 是否生成 sourcemap 文件
"sourcemap": false,
// 生成单个 sourcemap 文件, 需要开启 sourcemap 选项
"inlineSourceMap": false,

// 允许编译 js 文件
"allowJs": false,

// module === 'system' 或者设置了 esModuleInterop 且 module 不为 es2015/esnext
// 允许从没有设置默认导出的模块中默认导入, 不影响代码输出, 仅作为类型检查
"allowSyntheticDefaultImports": false,

// 不报告执行不到的代码错误
"allowUnreachableCode": false,

// 不报告未使用的标签错误
"allowUnusedLabels": false,

// 以严格模式解析, 并为每个源文件生成 "use strict" 语句
"alwaysStrict": false,

// 解析非相对模块名的基准目录
"baseUrl": ".",

// 输入文件的字符集
"charset": "utf8",

// 在 .js 文件中报告错误, 与 allowJs 配合使用
"checkJs": false,

// 生成相应的 .d.ts 文件
"declaration": false,

// 生成声明文件的输出路径
"declarationDir": "",

// 显示诊断信息
"diagnostics": false,

// 禁用 Js 工程体积大小的限制
"disableSizeLimit": false,

// 在输出文件的开头加入 BOM 头(UTF-8 Byte Order Mark), 用于标识文件编码格式
"emitBOM": false,

// 启用装饰器元数据的生成
"emitDecoratorMetadata": false,
// 启用实验性的ES装饰器
"experimentalDecorators": false,

// 不生成输出文件
"noEmit": false,

// 报错时不生成输出文件
"noEmitOnError": false,

// 在表达式和声明上有隐含的 any 类型时报错
"noImplicitAny": false,

// 不是函数的所有返回路径都有返回值时报错
"noImplicitReturns": false,

// 当 this 表达式的值为 any 类型时, 生成错误
"noImplicitThis": false,

// 不包含默认的库文件(lib.d.ts)
"noLib": false,

// 有未使用的局部变量则报错
"noUnusedLocals": false,

// 有未使用的参数则报错
"noUnusedParameters": false,

// 重定向输出目录, 不能和 outFile 同时使用
"outDir": "dist",

// 将输出文件合并为一个文件, 合并顺序根据传入编译器的文件顺序和 ///<reference``> 和 import 的文件顺序决定
"outFile": "",

// 模块别名配置
"paths": {},

// 是否保留 const 和 enum 声明, 用于优化输出或调试
"preserveConstEnums": false,

// 保留 watch 模式下过时的控制台输出
"preserveWatchOutput": false,

// 控制输出的目录结构, 例如: 当你的代码在 src 目录下, 输出会生成一层 src 目录, 将 rootDir 指定为 src 就可以去掉
"rootDir": "",

// 忽略所有声明文件(*.d.ts)的类型检查
"skipLibCheck": false,

// 禁用函数参数双向协变检查
"strictFunctionTypes": false,

// 确保类的非 undefined 属性已经在 构造函数里初始化, 需要同时启用 strictNullChecks
"strictPropertyInitialization": false,
// 在严格的 null 检查模式下, null 和 undefined 值不包含在任何类型里, 只允许用它们自己和 any 来赋值(undefined 可以 复制 void)
"strictNullChecks": false
}
}
```

### compileOptions

- target

编译 Js 的版本, 默认为 ES3

- ES3: 最广泛支持的版本
- ES5: 大多数现代浏览器支持
- ES6/ES2015: 引入了类、模块、箭头函数、Promise等新特性
- ES7/ES2016: 引入了 Array.prototype.includes 和幂运算符
- ES8/ES2017: 引入了 async/await
- ES9/ES2018: 引入了异步迭代等特性
- ES10/ES2019: 引入了 Array.prototype.flat 和 Object.fromEntries
- ES11/ES2020: 引入了可选链和空值合并运算符
- ES12/ES2021: 引入了 Promise.any 和逻辑赋值运算符
- ES13/ES2022: 引入了类字段和顶级 await
- ESNext: 编译为最新的 ECMAScript 版本, 包含所有新特性

- jsx

如何处理 JSX 语法

- preserve: 保留 JSX 语法, 不进行转换, 通常与 babel 等工具链结合使用
- react: 将 JSX 转换为 React.createElement 调用
- react-jsx: 将 JSX 转换为 新的 JSX 转换器(React 17 及以上版本引入), 不再需要显式导入 React
- react-jsxdev: 与 react-jsx 类似, 但用于开发模式, 提供额外的调试信息

- module

指定 TS 编译器生成的模块系统类型

- commonjs: 适用于 Node.js 环境
- es6/es2015: 使用 ES6 模块语法
- esnext: 与 es6 类似, 但允许使用最新的 es 模块特性
- amd: 异步模块定义, 主要用于浏览器环境, 使用 define 和 require
- umd: 通用模块定义, 兼容 CommonJS 和 AMD, 适用于库的开发
- system: 使用 SystemJS 模块加载器的模块格式
- none: 不使用任何模块系统, 所有代码视为全局脚本
1 change: 1 addition & 0 deletions docs/Knowledge/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@
- [抽象思想](./Abstract.html)
- [性能优化专题](./Performance.html)
- [前端工程化](./Engineer.html)
- [扫盲](./Literacy.html)
- [其他](./Other.html)

0 comments on commit 25a3e69

Please sign in to comment.