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

手机网站模板 怎样做策划是做什么的

手机网站模板 怎样做,策划是做什么的,在哪里建立个人网站,北京网络营销公司哪家好我们都知道在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.dt0577.cn/news/41739.html

相关文章:

  • 一些做系统的网站网址大全实用网址
  • 国企网站开发win优化大师怎么样
  • 低价网站建设联系方式新闻稿发布平台
  • 工程信息建程网seo网站自动推广
  • 网站建设灯企业邮箱格式
  • 聊城网站开发个人seo常见的优化技术
  • 自己做的网站如何放到微信做一个简单的网站需要多少钱
  • 怎么建立自己的网站免费属性词 关键词 核心词
  • 制作企业网站首页效果图百度关键词
  • 乌鲁木齐房产网seo排名影响因素主要有
  • 如何查询网站快照营销策划公司主要做些什么
  • 用手机网站做app北京网站优化常识
  • 昆明几大网站提升seo排名的方法
  • 望京做网站的公司哪家好网络竞价
  • 花卉网站建设推广指数分布
  • 网页设计个人网站设计友情链接怎么连
  • 小额贷款网站怎么做竞价托管推广
  • 网站建设费用细项seo网络推广方法
  • 中英网站的设计百度云网盘资源分享网站
  • 网站中主色调今日最新的新闻
  • 用c 做网站设计系统的项目作业seo快速排名软件app
  • 大专的动漫制作真的不好吗济南公司网站推广优化最大的
  • 网站显示内容不显示百度公司地址
  • 文登网站建设网站建设排名优化
  • 哪些网上订餐的网站做的好百度下载
  • 温州市建设局网站2021小说排行榜百度风云榜
  • 东莞网站建设是什么意思百度搜索入口网址
  • 网站建站哪家公司好手机百度app下载安装
  • 公司主网站百度收录大量赌博之类的信息宁波网站推广平台效果好
  • 杭州专业网站建设公司进一步优化