【问题标题】:how is the not operator in the module require working模块中的非运算符需要如何工作
【发布时间】:2016-12-12 01:20:57
【问题描述】:

我正在浏览一个开源编辑器项目,当我遇到这种奇怪的 require 语法时

var editorCss = require("./requirejs/text!./css/editor.css");

谁能告诉我这条线在做什么?需要路径中的!. 是什么?是作为一些参数传递到需要的文件中吗?

【问题讨论】:

    标签: javascript node.js requirejs commonjs


    【解决方案1】:

    感叹号使 RequireJS 使用插件来执行加载。感叹号前面的是插件,后面的是插件必须加载的。 require("./requirejs/text!./css/editor.css"); 告诉 RequireJS “加载插件 ./requirejs/text 并使用这个插件加载 ./css/editor.css

    这种语法恰好是 AMD 规范的一部分:RequireJS 是兼容的,因此支持它。其他支持 AMD 的加载器也可能支持它。

    【讨论】:

    • 这个语法可以在node require 中使用吗?
    • 不,Node 的 require 不兼容 AMD。它遵循 CommonJS 标准。您可以使用this Node package 让 Node 直接加载 AMD 模块,但它一般不支持插件。它text!something 一起工作,但它通过“作弊”来做到这一点。它不会加载插件,也不会将控制权传递给它。它只是检测到text!的使用,并使用fs.readFileSync直接返回模块的内容。
    • 我已经在使用 amd 加载器,但是在浏览器化时我得到了Running "browserify:main" (browserify) task >> Error: Cannot find module './requirejs/text!./css/editor.css' Warning: Error running grunt-browserify. Use --force to continue. Aborted due to warnings.
    • 看起来 Browserify 本身并不理解该语法。我建议在 SO 上搜索 browserify 问题。如果您找不到像您这样已经有答案的问题,您可以写一个问题来说明您遇到的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2017-03-16
    • 2016-10-03
    • 2016-10-25
    相关资源
    最近更新 更多