【问题标题】:Keeping javascript minified inside the database在数据库中保持 javascript 最小化
【发布时间】:2015-10-01 12:15:41
【问题描述】:

我写了一个脚本,放在不同的网站上。它在那里放了一些 html/css。我还编写了一个网站,可以为每个网站配置这个 html/css。

这就是脚本必须从数据库加载 html/css 的原因。这就是为什么我必须将 javascript 保存在数据库中,然后使用一些 eval 从脚本中触发它。

我的问题是 - 我怎样才能在数据库中保持这样的缩小,然后在一些所见即所得的编辑器中以很好的格式显示它?

示例文本:

var el = document.createElement('body');
el.innerHTML = 'foobar';
document.getElementsByTagName('body')[0].appendChild(el);

这是我想在我的所见即所得编辑器中得到的,但在 DB 中我想要这个:

var el = document.createElement('body');el.innerHTML = 'foobar';document.getElementsByTagName('body')[0].appendChild(el);

所以我必须以某种方式在这两者之间进行转换。

【问题讨论】:

  • 您的问题存在几个健全性问题(首先是您为什么使用 eval 并将 JS 存储到数据库中)。也不可能将缩小的脚本恢复为原始脚本......将 JS 转换为缩小的代码是一种有损转换。 functionUpdatesStuff 等描述性名称将变为 x 或其他单字母符号。
  • 你应该把这两个文件都保存在服务器上,但是当 WYSIWYG 被提交时(在此处显示常规 js 文件),用刚刚保存的普通 JS 编译的新版本替换缩小的 JS。跨度>
  • 是的,我知道这是一个糟糕的设计,每个人都这么说。但有什么不同的方式?在服务器上为每个用户存储大量文件?我仍然必须使用 eval。

标签: javascript php


【解决方案1】:

我认为您可以使用正则表达式来做到这一点(如果您只想将所有代码放在单行到数据库中):

要从编辑器存储到数据库做

var codeToDB = WYSIWYG_value.replace(/\r\n|\r|\n/g,"");

从数据库中恢复

var codeToWYSIWYG = codeFromDB.replace(/;/g,";\n")

【讨论】:

  • 你问过你的问题中的循环吗?
猜你喜欢
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 2016-08-15
相关资源
最近更新 更多