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

手机网站模板 怎样做搭建一个app平台需要多少钱

手机网站模板 怎样做,搭建一个app平台需要多少钱,申请免费网站建设,深圳设计公司 电话我们都知道在golang的模板语法中,我们可以使用template关键字嵌套其他模块, 如: {{template "模板文件名" .}} 然而,这里的 “模板文件名” 是不能使用变量的! 注意这里最后的的 . 这个实际上是templa…

我们都知道在golang的模板语法中,我们可以使用template关键字嵌套其他模块, 如: {{template "模板文件名" .}}  然而,这里的 “模板文件名”  是不能使用变量的!  注意这里最后的的  .   这个实际上是template关键字的第二个参数, 在go的模板里面 它代表的是当前的所有变量数据,即你在执行渲染模板时的第二个data参数,函数原型 func (t *template.Template) Execute(wr io.Writer, data any) error  了解这点很重要!

底层源码分析

golang的template模板解析底层是通过一个叫做 lexer 的对象来实现的。在lexer里面这里的 template 被作为一个关键字, 和其他的 if  else  end, range ,with等一样的关键字。  而这里的模板名在go底层在解析前就被使用Quote解码了, 即 strconv.Quote(模板文件名),所以你在这里输入的任何变量都不会被解析!

go底层代码见源码文件 /src/text/template/parse/node.go 

template这个关键字的第二个参数的处理代码:

func (t *TemplateNode) writeTo(sb *strings.Builder) {sb.WriteString("{{template ")sb.WriteString(strconv.Quote(t.Name))if t.Pipe != nil {sb.WriteByte(' ')t.Pipe.writeTo(sb)}sb.WriteString("}}")
}

lexer模板渲染里面的关键字参考

可以看到这里有我们熟悉的 .   if  else   range with  还有template 这些在golang的模板里面都被用作了关键字

var key = map[string]itemType{".":        itemDot,"block":    itemBlock,"break":    itemBreak,"continue": itemContinue,"define":   itemDefine,"else":     itemElse,"end":      itemEnd,"if":       itemIf,"range":    itemRange,"nil":      itemNil,"template": itemTemplate,"with":     itemWith,
}

lexer模板分隔符解析逻辑和默认分隔符参考

可见对于模板分隔符,如果我们传递的是一个空字符串,则lexer就会使用他自己 定义的常量 {{  }}来作为分隔符

// state functionsconst (leftDelim    = "{{"rightDelim   = "}}"leftComment  = "/*"rightComment = "*/"
)// lex creates a new scanner for the input string.
func lex(name, input, left, right string) *lexer {if left == "" {left = leftDelim}if right == "" {right = rightDelim}l := &lexer{name:         name,input:        input,leftDelim:    left,rightDelim:   right,line:         1,startLine:    1,insideAction: false,}return l
}

总结:

在go的模板里面,实际上他所有的关键字最终编译器层面基本上都是以函数的方式运行的。  这里的template关键字 的第二个参数在递交编译器之前被 Quote 了一把, 所以这里任何的变量都不会被解析,从而导致了template模板嵌套语法 不能使用任何的变量! 

http://www.dinnco.com/news/84497.html

相关文章:

  • 百度网站建设技术百度风云榜电视剧排行榜
  • 做什麽网站有前景苏州优化网站公司
  • 网页版游戏排行榜2022青岛seo全网营销
  • 网站模版 源码之家微信推广平台
  • 教务在线网站开发报告书如何给企业做网络推广
  • 企业网站怎么做推广seo优化总结
  • 高端网站设计品牌东莞今天发生的重大新闻
  • 私人网站设计公司公司优化的概念
  • 厦门的网站建设公司天津放心站内优化seo
  • 一个完整的电商网站开发周期营销推广投放
  • 一个网站做多有几种颜色长春seo排名
  • 最新网站开发软件专业网站seo推广
  • 可以做展示页面的网站seo薪酬水平
  • 河池网站优化长春seo按天计费
  • 营销推广方案模板seo职位描述
  • 苏州网站设计多少钱中国seo
  • 南阳网站建站培训资源优化排名网站
  • 东莞工信部网站微信推广软件
  • 北京著名的网站制作公司cpa推广联盟平台
  • 学院网站建设工作总结百度指数在线查询工具
  • 网站建设套餐有哪些怎么做网络营销平台
  • 深圳专业网站建设制作价格低创网站永久免费建站
  • 三级分销合法不鹤壁seo
  • 国外做的比较的ppt网站seo站内优化教程
  • 做微商推广有哪些好的分类信息网站网络营销软文范例300
  • 鄂州网站制作人才招聘今天最新的新闻头条
  • 多语言企业网站开发网络培训
  • 下载的网站模板怎么去掉域名前的图标硬件工程师培训机构哪家好
  • 西藏建筑工程网怎样做网站的优化、排名
  • 成都市住房和城乡建设局官方网站培训心得体会范文大全1000字