siteserver / cms

SS CMS 基于 .NET Core,能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大并易于维护的网站平台。
https://sscms.com
GNU Affero General Public License v3.0
3.68k stars 1.21k forks source link

recommendation #3707

Open TXLkb opened 11 months ago

TXLkb commented 11 months ago

stl不够灵活,设置内容易与代码产生冲突(在标签中填入带有标签的内容,在js中填入带有引号的内容),当前多数网站为了便捷开发都使用了vue、react等框架,他们的数据基本上都在js代码中,极易出现该问题。并且在使用stl语法将会导致webpack、vite等打包工具无法打包。

  1. 建议增加单引号、双引号、反引号的转义。实体标签解析为压缩形式(避免换行导致报错),并增加参数指定实体解析的字段(避免将不需要的数据与隐私数据暴露)

  2. 建议使用js代码操作stl的输出,但不要将操作代码输出,模板格式改为反引号(该符号在js代码中不易产生冲突)。

例如:

内容:

{
"data":'标题'
}

模板:

`stl:content js:data=>data.title`

输出:

标题
TXLkb commented 11 months ago

不管stl模板语法如何变动都无法解决所有场景问题,强烈建议将js代码作为模板语法的参数,类似于isDynamic,但不是通过Ajax获取

starlying commented 11 months ago

如果用反引号是可以避免JS内嵌问题,不过js:data=>data.title这个不太理解,直接用type=title不好吗

TXLkb commented 11 months ago

如果用反引号是可以避免JS内嵌问题,不过js:data=>data.title这个不太理解,直接用type=title不好吗

我只是举个简单例子,“js:data=>data.title”的意思是这样的,js:表示参数为js代码,data=>data.title表示js函数(js的箭头函数),data表示内容,data.title表示返回内容中的标题,很多时候需要的并不是某一个字段,可能是一个数组,例如一组图片,或者是栏目的多个内容的字段,这时候用js代码处理将会非常方便。

starlying commented 11 months ago

收到,我们会在下个版本增加反引号支持。