Pux文档告诉我在浏览器中使用require()
。该功能来自何处以及如何使用它?
背景
我尝试将Quill编辑器与使用purescript-pux的Web应用程序集成。 在Pux documentation之后我创建了一个文件 MyEditor.js ,如下所示:
// module MyEditor
var React = require("react");
var Pux = require("purescript-pux");
var MyEditor = React.createClass({
displayName: "MyEditor",
onTextChange: function onTextChange(value) {
this.setState({ text: value });
},
render: function render() {
return React.createElement(ReactQuill, { value: this.state.text,
onChange: this.onTextChange });
}
});
exports.fromReact = Pux.fromReact(MyEditor);
和文件 MyEditor.purs 如下:
module MyEditor where
import Pux.Html (Html, Attribute)
foreign import fromReact :: forall a. Array (Attribute a) -> Array (Html a) -> Html a
然后我在MyEditor.fromReact [value p.description]
中使用Html Action
并编译代码,但浏览器抱怨ReferenceError: require is not defined
。
我对javascript生态系统不太熟悉。我知道有几个提供require()函数的库存在,但是我和Pux使用哪个库以及如何使用?
答案 0 :(得分:2)
require
是NodeJS导入模块的方式,浏览器不支持它,因此您需要通过 bundler (如browserify)运行项目webpack生成一个浏览器可以理解的包。
如果您使用的是pulp
构建工具,它就像运行
pulp browserify --to app.js
然后通过脚本标记在html中加载app.js
。
答案 1 :(得分:0)
除了Christophs的答案(但由于评论不允许代码块,因此无法发表评论):
使用Thermite 4.1.1这对我有用:
添加package.json
文件:
{
"dependencies": {
"react": "^0.14",
"react-dom": "^0.14"
}
}
运行npm install
从那时起pulp browserify --optimise
将整个shebang打包。
这是非常严重的记录,我在purescript-react上打开了一个关于它的问题。