原址: https://zhuanlan.zhihu.com/p/30853705

原文: 中文代码示例教程之Angular尝试

为了检验中文命名在Angular中的支持程度, 把Angular官方入门教程的示例代码中尽量使用了中文命名. 以下源码库在.

创建项目

不支持中文命名:

$ ng new 英雄榜
Project
name "英雄榜" is not valid. New project names must start with a letter,
and must contain only alphanumeric characters or dashes. When adding a
dash the segment after the dash must also start with a letter.
英雄榜
^

文本绑定

不支持中文命名变量

app.component.ts:

export class AppComponent {
题目 = '示例';
}

app.component.html:

<h1>{{题目}}</h1>

报错:

compiler.js:466 Uncaught Error: Template parse errors:
Parser
Error: Unexpected token Lexer Error: Unexpected character [题] at column
1 in expression [题目] at column 2 in [{{题目}}] in
ng:///AppModule/AppComponent.html@0:4 ("<h1>[ERROR
->]{{题目}}</h1>"): ng:///AppModule/AppComponent.html@0:4
Parser
Error: Lexer Error: Unexpected character [题] at column 1 in expression
[题目] at column 2 in [{{题目}}] in ng:///AppModule/AppComponent.html@0:4
("<h1>[ERROR ->]{{题目}}</h1>"):
ng:///AppModule/AppComponent.html@0:4
Parser Error: Lexer Error:
Unexpected character [目] at column 2 in expression [题目] at column 3 in
[{{题目}}] in ng:///AppModule/AppComponent.html@0:4 ("<h1>[ERROR
->]{{题目}}</h1>"): ng:///AppModule/AppComponent.html@0:4

创建component

创建新component, 貌似支持中文:

$ ng generate component 英雄
create src/app/英雄/英雄.component.css (0 bytes)
create src/app/英雄/英雄.component.html (25 bytes)
create src/app/英雄/英雄.component.spec.ts (628 bytes)
create src/app/英雄/英雄.component.ts (310 bytes)
update src/app/app.module.ts (398 bytes)

但是报错:

英雄.component.ts:7 Uncaught ReferenceError: ViewEncapsulation is not defined
at eval (英雄.component.ts:7)
at eval (英雄.component.ts:18)
at Object.../../../../../src/app/英雄/英雄.component.ts (main.bundle.js:58)
at __webpack_require__ (inline.bundle.js:55)
at eval (app.module.ts:5)
at Object.../../../../../src/app/app.module.ts (main.bundle.js:36)
at __webpack_require__ (inline.bundle.js:55)
at eval (main.ts:4)
at Object.../../../../../src/main.ts (main.bundle.js:74)
at __webpack_require__ (inline.bundle.js:55)

已向Angular项目提交bug report: Avoid creating component with unicode naming, instead of throwing error after finishing creation.

后经指出, 上面的错误并不是由中文命名导致. 但由于HTML tag不支持中文(vuejs中也有类似问题), 需要将英雄.component.ts中:

selector: 'app-英雄',

改为:

selector: 'app-heroes',

在”app.component.html”中添加:

<app-heroes></app-heroes>

显示正常. 鉴于Angular在创建Component时自动生成selector代码, 之前的bug report仍然成立, 可以认为Angular本身不支持Component使用中文命名, 但自己修改selector后似乎仍然可用(以观后效).

添加类型

支持中文命名!

添加src/app/英雄.ts:

export class 英雄 {
id: number;
name: string;
}

英雄.component.ts中:

hero: 英雄 = {
id: 1,
name: '小明'
};

显示列表

由于中不能用中文命名, 因此<li *ngFor="let hero of heroes">中的hero不能用中文命名, 而heroes如果改为英雄们, 会报错:

Parser
Error: Lexer Error: Unexpected character [们] at column 15 in expression
[let hero of 英雄们] at column 16 in [let hero of 英雄们] in
ng:///AppModule/__Component.html@2:6 ("
<ul class="heroes">
<li *ngFor="let hero of 英雄们">
<span class="badge"></span>[ERROR ->]
</li>
</ul>"): ng:///AppModule/__Component.html@3:42

小结

限于时间, 评测只能暂告一段落. 在尝试的很小一部分功能中, 比较纯粹的TypeScript部分允许中文命名, 但牵涉到模板(Template)的部分对中文命名的支持非常有限.

中文代码示例之Angular入门教程尝试的更多相关文章

  1. 2017-11-07 中文代码示例之Angular入门教程尝试

    "中文编程"知乎专栏原址 原文: 中文代码示例教程之Angular尝试 为了检验中文命名在Angular中的支持程度, 把Angular官方入门教程的示例代码中尽量使用了中文命名. ...

  2. 中文代码示例之Vuejs入门教程(一)

    原址: https://zhuanlan.zhihu.com/p/30917346 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示 ...

  3. 2017-11-09 中文代码示例之Vuejs入门教程(一)

    "中文编程"知乎专栏原链 为了检验中文命名在主流框架中的支持程度, 在vuejs官方入门教程第一部分的示例代码中尽量使用了中文命名. 所有演示都在本地测试通过, 源码在这里. 下面 ...

  4. 2017-11-20 中文代码示例之Vuejs入门教程(一)问题后续

    "中文编程"知乎专栏原文 第一个issue: Error compiling template if using unicode naming as v-for alias · I ...

  5. 2018-06-21 中文代码示例视频演示Python入门教程第五章 数据结构

    知乎原链 续前作: 中文代码示例视频演示Python入门教程第四章 控制流 对应在线文档: 5. Data Structures 这一章起初还是采取了尽量与原例程相近的汉化方式, 但有些语义较偏(如T ...

  6. 2018-06-20 中文代码示例视频演示Python入门教程第四章 控制流

    知乎原链 续前作: 中文代码示例视频演示Python入门教程第三章 简介Python 对应在线文档: 4. More Control Flow Tools 录制中出了不少岔子. 另外, 输入法确实是一 ...

  7. 2018-06-20 中文代码示例视频演示Python入门教程第三章 简介Python

    知乎原链 Python 3.6.5官方入门教程中示例代码汉化后演示 对应在线文档: 3. An Informal Introduction to Python 不知如何合集, 请指教. 中文代码示例P ...

  8. 2018-11-16 中文代码示例之Programming in Scala笔记第四五六章

    续前文: 中文代码示例之Programming in Scala学习笔记第二三章. 同样仅节选有意思的例程部分作演示之用. 源文档仍在: program-in-chinese/Programming_ ...

  9. 中文代码示例之NW.js桌面应用开发初体验

    先看到了NW.js(应该是前身node-webkit的缩写? 觉得该起个更讲究的名字, 如果是NorthWest之意的话, logo(见下)里的指南针好像也没指着西北啊)和Electron的比较文章: ...

随机推荐

  1. python 小白(无编程基础,无计算机基础)的开发之路,辅助知识6 python字符串/元组/列表/字典互转

    神奇的相互转换,小白同学可以看看,很有帮助 #1.字典dict = {'name': 'Zara', 'age': 7, 'class': 'First'} #字典转为字符串,返回:<type ...

  2. sublime text 3 ctrl+b浏览器启动html

    sublime text 2 和3 都可以快速设置浏览器启动,本人在这里介绍如何不下插件启动浏览器.第一步:打开Tool-->build system  ---> new build sy ...

  3. C# Dictionary根据Key排序

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  4. Linux Rsync备份服务介绍及部署守护进程模式

    rsync介绍 rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份工具 在常驻模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输 ...

  5. quickhybrid】如何实现一个Hybrid框架

    章节目录 [quickhybrid]如何实现一个跨平台Hybrid框架 [quick hybrid]架构一个Hybrid框架 [quick hybrid]H5和Native交互原理 [quick hy ...

  6. sed命令针对文件操作具体解释

    Linux的简单shell脚本中改动文件操作 1.Sed简单介绍 sed 是一种在线编辑器,它一次处理一行内容.处理时.把当前处理的行存储在暂时缓冲区中,称为"模式空间"(patt ...

  7. POJ 3928 &amp; hdu 2492 &amp; Uva1428 PingPong 【树状数组】

    Ping pong                                                   Time Limit: 2000/1000 MS (Java/Others)   ...

  8. Javascript 方法apply和call的差别

    call与aplly都属于Function.prototype的一个方法.所以每一个function实例都有call.apply属性 同样点: call()方法和apply()方法的作用同样: 改变原 ...

  9. python 创建列表和向列表添加元素方法

    今天的学习内容是python中的列表的相关内容. 一.创建列表 1.创建一个普通列表 >>> tabulation1 = ['大圣','天蓬','卷帘'] >>> ...

  10. JAVA入门[14]-Spring MVC AOP

    一.基本概念 1.AOP简介 DI能够让相互协作的软件组件保持松散耦合:而面向切面编程(aspect-oriented programming,AOP)允许你把遍布应用各处的功能分离出来形成可重用的组 ...