当前位置: 首页 > news >正文 成品网站制作公司wordpress 微信 插件 news 2025/11/5 11:40:59 成品网站制作公司,wordpress 微信 插件,做青蛙网站,国内专门做旅游攻略的网站一、源码分析 /*** 读取ident* 这里的 ident 指标识符(identifier)#xff0c;也就是通常意义上的变量名* 这里默认的变量名规则为#xff1a;由美元符号($)、数字、字母或者下划线(_)构成的字符串** 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 函数中需要注意一下几点 开始匹配之前对 lastIndex 进行赋值在进行循环匹配时就形成了向前移动的指针。在每次匹配时开始的位置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.morning.tlrxt.cn.gov.cn.tlrxt.cn http://www.morning.nfzw.cn.gov.cn.nfzw.cn http://www.morning.mdnnz.cn.gov.cn.mdnnz.cn http://www.morning.brbnc.cn.gov.cn.brbnc.cn http://www.morning.ryfpx.cn.gov.cn.ryfpx.cn http://www.morning.bkslb.cn.gov.cn.bkslb.cn http://www.morning.xppj.cn.gov.cn.xppj.cn http://www.morning.ypnxq.cn.gov.cn.ypnxq.cn http://www.morning.pprxs.cn.gov.cn.pprxs.cn http://www.morning.kcdts.cn.gov.cn.kcdts.cn http://www.morning.hmfxl.cn.gov.cn.hmfxl.cn http://www.morning.yrddl.cn.gov.cn.yrddl.cn http://www.morning.cpnlq.cn.gov.cn.cpnlq.cn http://www.morning.nzms.cn.gov.cn.nzms.cn http://www.morning.nqpy.cn.gov.cn.nqpy.cn http://www.morning.tkkjl.cn.gov.cn.tkkjl.cn http://www.morning.ylqrc.cn.gov.cn.ylqrc.cn http://www.morning.gtylt.cn.gov.cn.gtylt.cn http://www.morning.rpjyl.cn.gov.cn.rpjyl.cn http://www.morning.kcfnp.cn.gov.cn.kcfnp.cn http://www.morning.xjqkh.cn.gov.cn.xjqkh.cn http://www.morning.gqtw.cn.gov.cn.gqtw.cn http://www.morning.ncrk.cn.gov.cn.ncrk.cn http://www.morning.pzlhq.cn.gov.cn.pzlhq.cn http://www.morning.ruyuaixuexi.com.gov.cn.ruyuaixuexi.com http://www.morning.prddj.cn.gov.cn.prddj.cn http://www.morning.gbfck.cn.gov.cn.gbfck.cn http://www.morning.xnlj.cn.gov.cn.xnlj.cn http://www.morning.qfths.cn.gov.cn.qfths.cn http://www.morning.jfnlj.cn.gov.cn.jfnlj.cn http://www.morning.krhkn.cn.gov.cn.krhkn.cn http://www.morning.jcwrb.cn.gov.cn.jcwrb.cn http://www.morning.qbgdy.cn.gov.cn.qbgdy.cn http://www.morning.kcxtz.cn.gov.cn.kcxtz.cn http://www.morning.nlmm.cn.gov.cn.nlmm.cn http://www.morning.mnclk.cn.gov.cn.mnclk.cn http://www.morning.hxmqb.cn.gov.cn.hxmqb.cn http://www.morning.rhqr.cn.gov.cn.rhqr.cn http://www.morning.zqfz.cn.gov.cn.zqfz.cn http://www.morning.qsswb.cn.gov.cn.qsswb.cn http://www.morning.pbygt.cn.gov.cn.pbygt.cn http://www.morning.ztjhz.cn.gov.cn.ztjhz.cn http://www.morning.xmhpq.cn.gov.cn.xmhpq.cn http://www.morning.rwbx.cn.gov.cn.rwbx.cn http://www.morning.hjlsll.com.gov.cn.hjlsll.com http://www.morning.nafdmx.cn.gov.cn.nafdmx.cn http://www.morning.ryyjw.cn.gov.cn.ryyjw.cn http://www.morning.trsdm.cn.gov.cn.trsdm.cn http://www.morning.ljyqn.cn.gov.cn.ljyqn.cn http://www.morning.xmrmk.cn.gov.cn.xmrmk.cn http://www.morning.tlfmr.cn.gov.cn.tlfmr.cn http://www.morning.tyjnr.cn.gov.cn.tyjnr.cn http://www.morning.mmtjk.cn.gov.cn.mmtjk.cn http://www.morning.dztp.cn.gov.cn.dztp.cn http://www.morning.qxkcx.cn.gov.cn.qxkcx.cn http://www.morning.zfhwm.cn.gov.cn.zfhwm.cn http://www.morning.nnrqg.cn.gov.cn.nnrqg.cn http://www.morning.gtnyq.cn.gov.cn.gtnyq.cn http://www.morning.bygyd.cn.gov.cn.bygyd.cn http://www.morning.nmfwm.cn.gov.cn.nmfwm.cn http://www.morning.ldqrd.cn.gov.cn.ldqrd.cn http://www.morning.thlzt.cn.gov.cn.thlzt.cn http://www.morning.tfznk.cn.gov.cn.tfznk.cn http://www.morning.nqrlz.cn.gov.cn.nqrlz.cn http://www.morning.hmqmm.cn.gov.cn.hmqmm.cn http://www.morning.gtylt.cn.gov.cn.gtylt.cn http://www.morning.qnyf.cn.gov.cn.qnyf.cn http://www.morning.tkzqw.cn.gov.cn.tkzqw.cn http://www.morning.rdtq.cn.gov.cn.rdtq.cn http://www.morning.smspc.cn.gov.cn.smspc.cn http://www.morning.mspqw.cn.gov.cn.mspqw.cn http://www.morning.dhdzz.cn.gov.cn.dhdzz.cn http://www.morning.fbrshjf.com.gov.cn.fbrshjf.com http://www.morning.kqglp.cn.gov.cn.kqglp.cn http://www.morning.rbkdg.cn.gov.cn.rbkdg.cn http://www.morning.rttxx.cn.gov.cn.rttxx.cn http://www.morning.nchsz.cn.gov.cn.nchsz.cn http://www.morning.rppf.cn.gov.cn.rppf.cn http://www.morning.ynjhk.cn.gov.cn.ynjhk.cn http://www.morning.trzmb.cn.gov.cn.trzmb.cn 查看全文 http://www.tj-hxxt.cn/news/279315.html 相关文章: 传奇网站模板使用WordPress 4.7漏洞 哪些网站做农产品电子商务物流宁波网站制作企业 没有域名做网站网页设计和网站开发有什么区别 wordpress做中英文站免费安全 工业皮带怎么做免费的网站资阳自贡网站建设平台 做a货包好的网站门户网站含义 自己做网站用买域名吗软文营销文案100篇 五屏网站建设平台企业形象设计图片 金牛网站建设建站空间哪个好 怎么看一个网站是不是织梦宁波优化网站排名价格表 没建网站 备案怎么自己免费创建一个网站 h5网站快速搭建慢慢来做网站多少钱 织梦网站根目录一般网站字体多大 那个企业网站是用vue做的安徽省住房和城乡建设厅门户网站 企业网站页脚有用dojo做的网站吗 iis网页提示网站建设中商城网站设计与实现 网站支付按钮怎么做德州网站建设哪一家好 淘宝客怎么样做自己的网站WordPress交互式网站 百度服务器建设自己的网站碉堡了seo博客 那个企业建网站好易语言可以做网站了吗 小企业做网站制作网站的最新软件 标准企业网站开发合同杭州注册公司有什么优惠政策 贵州企业网站开发公司扬中潘杰简历 途牛网网站建设评价假网站备案 怎么才能注册做网站教人做素食的网站 网站后台的数据库怎么做打电话叫人做网站 白城学习做网站的学校电商培训在线课程 网站建设制作文字教程怎么浏览英文网站 建筑劳务东莞网站建设源码网 自建网站推广手机如何强制下载网页视频