- 本文参加了由公众号@若川视野 发起的每周源码共读活动,点击了解详情一起参与。
- 这是源码共读的第34期,链接:www.yuque.com/ruochuan12/…
学习目标
主要学习两个命令
- 新增组件: npm run init [组件名]
- 删除组件:npm run init [组件名] del
了解TDesign 官网
腾讯开源的一套企业级设计体系,跟antDesign是一类东西,包含pc端、移动端、小程序,大厂出品,必属精品,有机会可以用起来。
学习任务
- github仓库地址 github.com/Tencent/tde…
- github1s: github1s.com/Tencent/tde… 将项目克隆到本地,找到对应代码位置
调试方法
打上断点,执行npm run init newFile开始调试
然后可以根据自己节奏按f11逐步调试
- 通过
getToBeCreatedFiles,获取所有要创建的文件路径,模板文件
- 执行
addComponent根据对应的模板和文件路径创建
后面没啥说的,就是通过fs模块操作文件的一些方法
总结
一些点记下来
- path和fs的一些操作
process.cwd()方法返回 Node.js 进程的当前工作目录
-
process.argv可以读取到输入的命令参数 -
path.resolve()命令
- path.resolve()返回绝对路径d:\zhet\tdesign-vue - 参数不带 / ,path.resolve('a')返回绝对路径拼接后的d:\zhet\tdesign-vue\a - 参数带 / ,表示绝对路径,返回最后一个带 / 的绝对路径 path.resolve('/a'),返回 d:\a - path.resolve('a','b'),返回d:\zhet\tdesign-vue\a\b -
fs.readFileSync('路径').toString()读取模板数据,
-
fs.write()将数据写入文件
-
fs.existsSync()判断文件是否存在
-
fs.rmdirSync()同步删除目录,目录下必须为空,fs.unlinkSync()删除文件
- lodash.template()创建预编译模板的方法
- 一个首字母转大写的方法
function getFirstLetterUpper(a) {
return a[0].toUpperCase() + a.slice(1);
}
- String.match()检索返回一个字符串匹配正则表达式的结果
let str='sssssdfgerteryertwteryerwr'
//undefined
str.match(new RegExp('dfg'))
//['dfg', index: 5, input: 'sssssdfgerteryertwteryerwr', groups: undefined]0: "dfg"groups: undefinedindex: 5input: "sssssdfgerteryertwteryerwr"length: 1[[Prototype]]: Array(0)
str.match(new RegExp('dfg2'))
//null
-
学到了批量创建文件的方式,避免手动创建复制粘贴代码
-
非常nice,直接copy到项目,改吧改吧,面试的时候亮点+1(拿来吧你^-^)
-
浅层学习看输入,深层学习看输出。这次源码并不难,十来分钟就能看懂,不过写完笔记和看完的收获明显不一样,写笔记也花了更多时间,不管写的咋样,大家可以试着写一下,会有不一样的收获!