javascript节点module.exports/前端的require()代码
javascript node module.exports / require() code on the front-end
我一直在研究使用 SVGO 这样的库来清理用户在前端提交的 SVG 代码。 SVGO 是一个基于 node.js 的库,通常在后端工作,所以我一直在努力思考如何将 SVG 代码从前端发送到后端,然后得到经过清理的代码在前端反刍。
正是在我试图弄清楚这一点的时候,我检查了他们的 web app example, which—upon inspection, runs code inside linked scripts that I would typically see on the back end on the front end. In particular, many of their functions have the signature (full script):
1: [function(require, module, exports) {
"use strict";
var loadScripts = require("./load-scripts"),
...
module.exports = exportedFunction;
}]
非常令人困惑,因为这通常是我与后端关联的 JS,尤其是 require
、module.exports
语法等等。
问题
- 这只是他们整个前端库 SVGO 吗?他们是否手动重写它以与前端兼容?或者像 browserfy 这样的工具就是为了这个?
- 如果是这样,运行在前端和后端使用它有什么好处?一个是 easier/are 有一些关于在何处使用的通用准则?
- 乍一看,在浏览器中 运行 SVGO 库并在那里进行转换似乎更容易(因为我不必调用后端)。那里的一般做法是什么?
感谢您的任何见解。我正在努力确保以最 sense/up 符合 Web 标准的方式构建我的项目。
答案:
他们正在使用像 browserify or requirejs 这样的模块加载器来允许在浏览器中使用 commonjs 模块。这并不意味着所有的库都可以在客户端工作,例如使用节点 io 模块将不起作用。
在发送之前在浏览器端进行一些清理会很有用(节省几 kBytes)。浏览器的优点是免费,您无需为在客户端托管 运行 的代码付费,一些 optionnal 清理可以在 运行浏览器。 但是:见3.
即使客户端清理很容易,您也应该始终在后端检查和清理用户的输入,尤其是 .svg
文件,因为它们可能包含 <script>
可能允许 XSS .
的标签
我一直在研究使用 SVGO 这样的库来清理用户在前端提交的 SVG 代码。 SVGO 是一个基于 node.js 的库,通常在后端工作,所以我一直在努力思考如何将 SVG 代码从前端发送到后端,然后得到经过清理的代码在前端反刍。
正是在我试图弄清楚这一点的时候,我检查了他们的 web app example, which—upon inspection, runs code inside linked scripts that I would typically see on the back end on the front end. In particular, many of their functions have the signature (full script):
1: [function(require, module, exports) {
"use strict";
var loadScripts = require("./load-scripts"),
...
module.exports = exportedFunction;
}]
非常令人困惑,因为这通常是我与后端关联的 JS,尤其是 require
、module.exports
语法等等。
问题
- 这只是他们整个前端库 SVGO 吗?他们是否手动重写它以与前端兼容?或者像 browserfy 这样的工具就是为了这个?
- 如果是这样,运行在前端和后端使用它有什么好处?一个是 easier/are 有一些关于在何处使用的通用准则?
- 乍一看,在浏览器中 运行 SVGO 库并在那里进行转换似乎更容易(因为我不必调用后端)。那里的一般做法是什么?
感谢您的任何见解。我正在努力确保以最 sense/up 符合 Web 标准的方式构建我的项目。
答案:
他们正在使用像 browserify or requirejs 这样的模块加载器来允许在浏览器中使用 commonjs 模块。这并不意味着所有的库都可以在客户端工作,例如使用节点 io 模块将不起作用。
在发送之前在浏览器端进行一些清理会很有用(节省几 kBytes)。浏览器的优点是免费,您无需为在客户端托管 运行 的代码付费,一些 optionnal 清理可以在 运行浏览器。 但是:见3.
即使客户端清理很容易,您也应该始终在后端检查和清理用户的输入,尤其是
.svg
文件,因为它们可能包含<script>
可能允许 XSS . 的标签