前端

时间:2015-06-17 08:40:25

标签: javascript node.js svg browserify

我一直在研究使用SVGO这样的库来清除前端用户提交的SVG代码。 SVGO是一个基于node.js的库,它通常在后端工作,所以我一直在努力探索如何从前端到后端发送SVG代码然后让清理后的代码重新启动前端。

当我试图解决这个问题时,我检查了他们的web app example,在检查时,会在链接脚本中运行代码,我通常会在前端的后端看到这些代码。特别是,他们的许多功能都有签名(full script):

1: [function(require, module, exports) {
    "use strict";
    var loadScripts = require("./load-scripts"),
    ...
module.exports = exportedFunction;
}]

非常令人困惑,因为这通常是我与后端关联的JS,特别是requiremodule.exports语法等等。

问题

  1. 这只是他们整个图书馆SVGO在前端吗?他们是否手动重写它以与前端兼容?或者像browserfy这样的工具是什么?
  2. 如果是这样,在前端和后端运行它有什么好处?是否会更容易/是否有一些常用指南可供使用?
  3. 从最初的一眼看,似乎在浏览器中运行SVGO库并在那里进行转换会更容易(因为我不必调用后端)。那里的一般做法是什么?
  4. 感谢您的任何见解。我正在努力确保以最符合Web标准的方式构建我的项目。

1 个答案:

答案 0 :(得分:6)

数目:

  1. 他们正在使用browserifyrequirejs之类的模块加载器来允许在浏览器中使用commonjs模块。它并不意味着所有库都可以在客户端工作,例如使用节点io模块不起作用。

  2. 在发送之前在浏览器端进行一些清理会很有用(节省几千字节)。浏览器具有免费的优势,您无需为托管在客户端运行的代码付费,可以在浏览器上运行某些 optionnal 清理。 :见3.

  3. 即使很容易进行客户端清理,也应始终检查并清理后端用户的输入,尤其是.svg文件,因为它们可以包含<script>可能允许XSS的标签。