当前位置: 首页 > news >正文

网站如何实现多语言景安 怎么把网站做别名

网站如何实现多语言,景安 怎么把网站做别名,线上app怎么做,如何k掉别人的网站一、源码分析 /*** 读取ident* 这里的 ident 指标识符(identifier),也就是通常意义上的变量名* 这里默认的变量名规则为:由美元符号($)、数字、字母或者下划线(_)构成的字符串** inner* param {Walker} walker 源码读取对象* return {string}*/ functio…

一、源码分析

/*** 读取ident* 这里的 ident 指标识符(identifier),也就是通常意义上的变量名* 这里默认的变量名规则为:由美元符号($)、数字、字母或者下划线(_)构成的字符串** @inner* @param {Walker} walker 源码读取对象* @return {string}*/
function readIdent(walker) {var match = walker.match(/\s*([\$0-9a-z_]+)/ig, 1)
, 1);// #[begin] errorif (!match) {throw new Error('[SAN FATAL] expect an ident: ' + walker.source.slice(walker.index));}// #[end]return match[1];
}

readIdent 函数用来匹配 template 中用到的变量名(如下图)请添加图片描述

首先用到了 walk 类中的 match 函数,该函数源码如下(这里不是 walk 类全部代码而是列出了本次用到的代码)

/*** 字符串源码读取类,用于模板字符串解析过程** @class* @param {string} source 要读取的字符串*/
function Walker(source) {this.source = source; // 存储要解析的模版字符串this.len = this.source.length; // 获得字符串长度this.index = 0; // 初始话当前指针位置
}/*** 向前读取符合规则的字符片段,并返回规则匹配结果** @param {RegExp} reg 字符片段的正则表达式* @param {boolean} isMatchStart 是否必须匹配当前位置* @return {Array?}*/
Walker.prototype.match = function (reg, isMatchStart) {reg.lastIndex = this.index; // 指定下一次匹配的起始索引// 如果匹配成功,exec() 方法返回一个数组,并更新正则表达式对象的 lastIndex 属性。完全匹配成功的文本将作为返回数组的第一项,从第二项起,后续每项都对应一个匹配的捕获组。var match = reg.exec(this.source);// exec() 可用来对单个字符串中的多次匹配结果进行逐条的遍历(包括捕获到的匹配),而相比之下, String.prototype.match() 只会返回匹配到的结果。if (match && (!isMatchStart || this.index === match.index)) {this.index = reg.lastIndex; // 更新下次匹配的起始索引return match;}
};

match 函数中主要用到了 exec 函数来进行正则表达式匹配,match 函数中需要注意一下几点

  1. 开始匹配之前对 lastIndex 进行赋值,在进行循环匹配时就形成了向前移动的指针。在每次匹配时开始的位置,
  2. isMatchStart 是一个必须匹配当前位置标识。当 isMatchStart 为 false 时,或者通过取反操作为 false时,就进行当前index和match.index进行相等比较,只有两者相等才可以是匹配当前位置,而其中 match.index 为‘匹配到的字符位于原始字符串的基于 0 的索引值’,this.index 在匹配的过程中也是动态更新的,所以可以使用两个值做比较。

在san中变量名由美元符号($)、数字、字母或者下划线()构成,为了匹配变量名给出如下正则表达式
请添加图片描述
上图可以看出变量名是如何匹配的,在 match 中 isMatchStart 表示为已经开启。为啥开启呐?下面看一下/\s*([$0-9a-z
]+)/ig,正则表达式如何匹配变量的

正确的变量命名
请添加图片描述

正确的变量命名它的index是从 0 开始的
请添加图片描述
不正确的变量命名是不是从 0 开始,也就是说 match.index 和 this.index 不相等。

注意:本例子中index是从0开始,在其他相关中可能不一样,但是如果isMatchStart标识开启了,那么match.index 和 this.index 必须相等

如果没有匹配到,则报错。如果匹配到就返回 match[1]即匹配到的值。
这里需要知道的是为啥是match[1] 而不是 match[0] 或者 [2]?这是因为 当exec 函数匹配成功,exec() 方法返回一个数组,并更新正则表达式对象的 lastIndex 属性。完全匹配成功的文本将作为返回数组的第一项,从第二项起,后续每项都对应一个匹配的捕获组。那么什么是捕获组呐?可以简单为正则表达式中使用括号‘()’括起来的就是一个捕获组,在匹配变量名表达式中可以看出([$0-9a-z_]+)是。所以是 match[1]

http://www.yayakq.cn/news/489560/

相关文章:

  • 厦门网站建设格江西建筑人才网
  • 上海网站优化公司排名网站建好了 如何推广
  • 洛阳霞光做网站的公司网络推广策划书范文
  • 优化整站佛山贸易网站建设
  • 网站建设歺首选金手指14网站规划建设案例
  • 佛山小企业网站建设做果蔬零售的网站
  • 济源企业网站建设wordpress最新版怎么变成英文
  • 做推文的网站的推荐下载百度浏览器
  • 我的南京网站网站的步骤
  • 公司网站域名续费一年多少钱网站建设相关书籍
  • 优化网站要怎么做网页游戏在哪里制作
  • 网站空间怎么建站ajax wordpress
  • 青岛做网站建网站wordpress主题如何安装
  • 做期货黄金哪个网站信息数据准商业网站备案流程
  • ecetc商务网站建设工程师做网站用什么开发工具好
  • 新干做网站wordpress自适应淘宝客主题
  • 59做网站上海债务优化公司
  • 苏州网站建设哪家便宜常德网站建设制作
  • 小语种网站案例wordpress提交与筛选
  • 怎么建设和聚享游一样的网站呢常州网站建设czyzj
  • 建设网站公司推荐宣传海报制作app
  • 做百度微信小程序都有哪些网站网站推荐你了解我意思吧
  • 商务网站内容建设教程万盛建设局官方网站
  • 建立网站的准备工作怎么制作软件?
  • 网站建设的收费标准wordpress洋葱
  • 网站的结构包括哪些内容南京网站建设小程序开发 雷仁网络
  • 管理信息系统网站建设网站设计报价.doc
  • 企业官方网站推广建筑培训网官网查询
  • 网站建设与管理简单么南通制作网站的有哪些公司吗
  • 鑫牛元网站建设工业设计展板