2018-11-21 手工翻译Vue.js源码第一步:14个文件重命名

背景
对现有开源项目的代码进行翻译(文件名/命名/注释) · Issue #107 · program-in-chinese/overview
简单地说, 通过翻译源码, 提高项目代码可读性(对于母语为中文的开发者). 并在此过程中小结源码翻译辅助工具的需求.
源码库分支: program-in-chinese/vue
源码分析参考文档: Vue.js 技术揭秘 | Vue.js 技术揭秘
14个重命名的文件列表
core/vdom/helpers/normalize-children->规格化子节点
core/vdom/create-element->创建元素
core/vdom/vnode->虚拟节点
platforms/web/entry-runtime-with-compiler->入口-运行时-带编译器
platforms/web/runtime/index->索引
core/index->索引
core/instance/index->索引
core/instance/inject->注入
core/instance/lifecycle->生命周期
core/instance/proxy->代理
core/instance/events->事件
core/instance/render->渲染
core/instance/state->状态
core/instance/init->初始化
大概翻译过程
- fork原代码库, clone到本地, 默认分支为dev. 在此基础上新建分支"translate-source". 运行npm test通过所有测试.
- 逐章阅读参考文档, 将涉及的文件重命名. 在此之前运行npm run dev, 可以监控文件修改并自动编译, 根据编译错误修改对应文件
- 在刚开始时做了太多修改, 运行npm test时发现问题难以排错, 因此现在采取每个文件重命名后第二步构建成功后就运行npm test, 通过后就commit. 奇怪的是之前的问题再没出现.
源码库基本统计
src目录中236个文件, 16893行JavaScript代码
参考: How do you list number of lines of every file in a directory in human readable format.
源码根目录下运行命令:
$ wc -l `find src -type f`
小结
估计30个小时重命名所有src下文件(包括文档初步学习时间). 下一步尝试重命名源码中的中文命名, 已预估所有源码翻译时间, 相信由于对源码和基本术语了解更多之后, 翻译方法有改进空间, 速度也会加快.
源码翻译是一种简单的重构, 对测试用例范围覆盖要求较高. 唯一碰到不稳定的测试用例已有报告: tests fail from clean environment · Issue #7130 · vuejs/vue
暂时没有发现难以解决的技术问题. 不过命名风格还在小结中, 比如带"-"的文件名, 有些单词构成短语, 但另一些没有. 比如"create-element", 翻译成"创建-元素"就觉得"-"是冗余的, 因此略去为"创建元素". 而"entry-runtime-with-compiler", 暂时翻为"入口-运行时-带编译器", 但也许"带编译器的运行时入口"更自然些.
2018-11-21 手工翻译Vue.js源码第一步:14个文件重命名的更多相关文章
- 2018-11-23 手工翻译Vue.js源码:尝试重命名标识符与文本
续前文: 手工翻译Vue.js源码第一步:14个文件重命名 对core/instance/索引中的变量, 方法进行重命名如下(题图): import { 混入初始化 } from './初始化' im ...
- vue.js源码精析
MVVM大比拼之vue.js源码精析 VUE 源码分析 简介 Vue 是 MVVM 框架中的新贵,如果我没记错的话作者应该毕业不久,现在在google.vue 如作者自己所说,在api设计上受到了很多 ...
- 从template到DOM(Vue.js源码角度看内部运行机制)
写在前面 这篇文章算是对最近写的一系列Vue.js源码的文章(https://github.com/answershuto/learnVue)的总结吧,在阅读源码的过程中也确实受益匪浅,希望自己的这些 ...
- Vue.js源码——事件机制
写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出.文章的原地址:https://github.com/an ...
- 从Vue.js源码角度再看数据绑定
写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出.文章的原地址:https://github.com/an ...
- vue源码分析—Vue.js 源码构建
Vue.js 源码是基于 Rollup 构建的,它的构建相关配置都在 scripts 目录下.(Rollup 中文网和英文网) 构建脚本 通常一个基于 NPM 托管的项目都会有一个 package.j ...
- 【转】从Vue.js源码看异步更新DOM策略及nextTick
在使用vue.js的时候,有时候因为一些特定的业务场景,不得不去操作DOM,比如这样: <template> <div> <div ref="test" ...
- vue.js源码学习分享(一)
今天看了vue.js源码 发现非常不错,想一边看一遍写博客和大家分享 /** * Convert a value to a string that is actually rendered. *转换 ...
- Vue.js 源码分析(一) 代码结构
关于Vue vue是一个兴起的前端js库,是一个精简的MVVM.MVVM模式是由经典的软件架构MVC衍生来的,当View(视图层)变化时,会自动更新到ViewModel(视图模型),反之亦然,View ...
随机推荐
- Java面试集合(六)
1. abstract抽象 什么是abstract,中文为抽象,从具体事物抽出,概括它们共同的方面,本质属性与关系等,称为抽象.看不见,摸不着的东西叫做抽象,抽象是人们对世界万物的感觉,用特定的图像表 ...
- LabVIEW(三):定时与触发
一.定时 多功能数据采集板卡的时钟特性,举例为M系列定时引擎:板卡上控制采集和波形发生的三个时钟:AI Sample Clock.AI Convert Clock.AO Sample Clock.所有 ...
- python之集合(set)学习
集合(set) 集合是一个无序的不重复元素序列,使用大括号({}).set()函数创建集合, 注意:创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典. 集合是无序的.不重复的.没 ...
- Django 数据聚合函数 annotate
统计各个分类下的文章数 2 周,3 日前 字数 3818 阅读 546 评论 21 在我们的博客侧边栏有分类列表,显示博客已有的全部文章分类.现在想在分类名后显示该分类下有多少篇文章,该怎么做呢?最优 ...
- csv与xlsx导出
一.csv与xlsx格式基本介绍 csv即comma seperate values - 逗号分隔值,文件以纯文本形式来存储表格数据,它可以由任意数目的记录组成,记录之间通过某种换行符来分 ...
- mysql 开发进阶篇系列 12 锁问题(隔离级别下锁的差异)
1. innodb在不同隔离级别下的一致性读及锁的差异 不同的隔离级别下,innodb处理sql 时采用的一致性读策略和需要的锁是不同的,同时,数据恢复和复制机制的特点,也对一些sql的一致性读策略和 ...
- Android--多线程之进程与线程
前言 对于Android程序中,使用多线程的技术是必不可少的,就拿之前最简单的例子来说明,对于Android4.0+的应用而言,访问网络必须另起线程才可以访问.本片博客介绍Android下进程和线程, ...
- DWR第四篇之对象传参
1. 本示例在第一篇架构基础上添加代码 2. 首先,在dwr.xml文件里添加对象转换器 3. 编写Person实体类 package com.skyer.vo; import java.util.A ...
- centos7非centos标准服务 /etc/init.d/service_name start || stop 启动异常
公司自己写的java程序,在centos7系统执行/etc/init.d/service_name start||stop的时候报错: grafana二次开发的程序 [root@docp1 init. ...
- spring学习(四) ———— 整合web项目(SSH)
清楚了spring的IOC 和 AOP,最后一篇就来整合SSH框架把,记录下来,以后应该会用的到. --WH 一.web项目中如何使用spring? 当tomcat启动时,就应该加载spring的配置 ...