一种构建 JavaScript 库的方法

最近手头有个项目需要构建 JavaScript 库,核心需求是库既能用于传统的多页面,也能用于 Angular 的单页面。目前网络上暂时好像没有这类详细教程,反而是一些理论阐述的文章较多,经过一番研究后,我得到了一个适合自己的方法。

由于我希望库既能用于多页面,也能用于 Angular 单页面,所以需要支持 UMD 和 ES Harmony。由于 Angular 是使用 TypeScript 开发,最好还能提供用于 TypeScript 的声明文件。最原始的想法自然是手动按要求提供各种文件,但这样工作量比较大,也不容易扩展。那么还有什么容易的办法吗?有的,最核心的想法就是库的源码只写一份,然后用工具生成各种模块系统需要文件。具体的做法可能有差异,但理念是一样的。

从我的需求出发,我最终选择用 TypeScript 来写库的源码,基于脱敏的考虑,这里选择 TypeScript 文档中的示例代码来演示。

首先我们建立好库的源码目录结构并配置好源码管理:

1
2
3
4
5
6
simple-module-example
├── src
│   ├── LettersOnlyValidator.ts
│   ├── Validation.ts
│   ├── ZipCodeValidator.ts
│   └── index.ts

然后使用 npm init 生成 package.json 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
  "name": "simple-module-example",
  "version": "1.0.0",
  "description": "A simple module example.",
  "main": "index.js",
  "directories": {
    "test": "test"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "module",
    "example"
  ],
  "author": "Meiliang Dong",
  "license": "MIT"
}
继续阅读

Linux 使用笔记(三)

1.系统迁移和备份

A:为了数据安全,我们需要对系统备份,换新电脑或者更换云服务时我们需要迁移系统。Linux 系统备份和迁移的方法很多,我这里打算使用 tar 。

系统备份

首先是根据自己的实际情况列出需要备份的目录,通常有:

  • /etc/
  • /home/
  • /var/spool/mail/
  • /var/spool/cron/
  • /root
  • /usr/local/bin

然后使用 tar 命令打包:

1
2
3
tar -jcv -f /backups/backup-system-20200902.tar.bz2 \
> --exclude=/root/*.bz2 --exclude=/root/*.gz --exclude=/home/loop* \
> /etc /home /var/spool/mail /var/spool/cron /root /usr/local/bin

系统恢复

首先可以将备份解压到 /tmp 目录,之后使用 rsync 命令复制到对应目录便可恢复。

1
2
3
4
5
6
7
tar -jxv -f /backups/backup-system-20200902.tar.bz2 -C /tmp
rsync -avuzb /tmp/etc/ /etc
rsync -avuzb /tmp/home/ /home
rsync -avuzb /tmp/var/spool/mail/ /var/spool/mail
rsync -avuzb /tmp/var/spool/cron/ /var/spool/cron
rsync -avuzb /tmp/root/ /root
rsync -avuzb /tmp/usr/local/bin/ /usr/local/bin
继续阅读

MySQL 使用笔记(二)

1.如何查看数据库中所有的存储过程?

A: mysql> show procedure status where db = 'db_for_mysql_crash_course'\G;;