需要没有 Browserify、Webpack 或 Babel 的 reactjs 模块
Require reactjs modules without Browserify, Webpack or Babel
我正在尝试在 visual studio 中设置 TypeScript HTML 应用程序。我想使用 reactjs v0.14.7
我想避免使用像 Browserify 这样的工具。
但是,react-dom
模块如何使用呢?
让我们暂时忘掉打字稿。我需要先启动纯 ES5 和 运行。
目前,我有这个:
<script src="Scripts/react/react.js"></script>
<script src="Scripts/react/react-dom.js"></script>
<script>
var Button = React.createClass({
render: function () {
return (React.createElement("div", { className: "btn btn-default" }, 'hello world'));
}
});
ReactDOM.render(React.createElement('Button'), document.getElementById('container'));
</script>
但是,浏览器报错,ReactDOM 对象不存在。
我试过:
<script src="Scripts/require.js"></script>
<script src="Scripts/react/react.js"></script>
<script src="Scripts/react/react-dom.js"></script>
<script>
var React = require('react');
var ReactDOM = require('react-dom');
....
</script>
然而,它不适用于 require.js:模块名称 "react" 尚未加载上下文:_。使用 require([])
请问有人能对此多加解释吗?如何在没有任何服务器端工具(如捆绑、转译等)的情况下使用 React
像"use npm"这样的答案不会被接受为答案。
RequireJS 和 require
是非常不同的东西 - 稍后会详细介绍。
如果你想在没有像 Browserify 或 Webpack 这样的工具的情况下使用 React,那么你不一定需要模块加载器。 React 和 ReactDOM 的托管版本将公开您可以开箱即用的全局变量。
<script src="https://fb.me/react-0.14.7.js"></script>
<script src="https://fb.me/react-dom-0.14.7.js"></script>
<script>
console.log(React, ReactDOM);
</script>
如果您想在本地使用这些文件,只需下载这些文件即可。
SystemJS
所有这一切,听起来 SystemJS and JSPM 可能正是您要找的东西。
首先使用 jspm
安装你的包。
jspm install systemjs react react-dom
然后link并配置SystemJS。
<script src='jspm_packages/system.js'></script>
<script>
System.import('app.js');
</script>
现在在app.js
里面你可以写CommonJS风格的代码了。
var React = require('react');
var ReactDOM = require('react-dom');
SystemJS 将处理其余脚本的加载。如果您想进行生产构建,那么它就像 运行 jspm bundle app
.
一样简单
CommonJS
您在 React 教程和其他示例中看到的对 require
的调用是针对名为 CommonJS.
的模块格式
您使用 require('react')
获取对 React 模块导出的值的引用(使用 npm 安装到 node_modules
中)。这意味着您需要像 Browserify 或 Webpack 这样的预浏览器构建步骤,它可以将您需要的所有模块装订在一起并输出一个大脚本文件。
RequireJS
令人困惑的是,CommonJS 和 RequireJS 使用同名函数来指定依赖项。您正在尝试使用 RequireJS require
函数,就好像您在使用 CommonJS 模块一样。
如果你想用 RequireJS 导入 React,那么你需要像这样:
<script src="js/require.js"></script>
<script>
require.config({
'baseUrl' : 'Scripts/',
});
require(["react-0.14.7", "react-dom-0.14.7"],
function(React, ReactDOM) {
console.log(React, ReactDOM);
});
</script>
当您的代码执行时,RequireJS 将关闭并为您指定的模块添加脚本标签。然后一旦这些脚本加载完成,它将把它们导出的值传递给回调函数供您使用。
看看这个项目
https://github.com/ORESoftware/hr4r2
它正在做你想做的事——它正在使用 RequireJS + React + TypeScript。它正在做服务器端渲染并且是一个SPA。
此项目未使用 Webpack 或 Babel。
这是 Redux 的创建者 Dan Abramov 本人的一个示例,他在其中制作了一个 React 应用程序,而没有使用 webpack、babel 或 browserify。
http://codepen.io/gaearon/pen/ZpvBNJ?editors=0010
在你的 HTML 文件中你的 body 标签中写入
<div id="root">
<!-- This div's content will be managed by React. -->
</div>
然后在你的脚本标签中输入这个
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('root')
);
PS 确保将这 2 个库放在顶部
https://cdnjs.cloudflare.com/ajax/libs/react/15.3.1/react.js
https://cdnjs.cloudflare.com/ajax/libs/react/15.3.1/react-dom.js
希望对您有所帮助。
我正在尝试在 visual studio 中设置 TypeScript HTML 应用程序。我想使用 reactjs v0.14.7
我想避免使用像 Browserify 这样的工具。
但是,react-dom
模块如何使用呢?
让我们暂时忘掉打字稿。我需要先启动纯 ES5 和 运行。
目前,我有这个:
<script src="Scripts/react/react.js"></script>
<script src="Scripts/react/react-dom.js"></script>
<script>
var Button = React.createClass({
render: function () {
return (React.createElement("div", { className: "btn btn-default" }, 'hello world'));
}
});
ReactDOM.render(React.createElement('Button'), document.getElementById('container'));
</script>
但是,浏览器报错,ReactDOM 对象不存在。
我试过:
<script src="Scripts/require.js"></script>
<script src="Scripts/react/react.js"></script>
<script src="Scripts/react/react-dom.js"></script>
<script>
var React = require('react');
var ReactDOM = require('react-dom');
....
</script>
然而,它不适用于 require.js:模块名称 "react" 尚未加载上下文:_。使用 require([])
请问有人能对此多加解释吗?如何在没有任何服务器端工具(如捆绑、转译等)的情况下使用 React
像"use npm"这样的答案不会被接受为答案。
RequireJS 和 require
是非常不同的东西 - 稍后会详细介绍。
如果你想在没有像 Browserify 或 Webpack 这样的工具的情况下使用 React,那么你不一定需要模块加载器。 React 和 ReactDOM 的托管版本将公开您可以开箱即用的全局变量。
<script src="https://fb.me/react-0.14.7.js"></script>
<script src="https://fb.me/react-dom-0.14.7.js"></script>
<script>
console.log(React, ReactDOM);
</script>
如果您想在本地使用这些文件,只需下载这些文件即可。
SystemJS
所有这一切,听起来 SystemJS and JSPM 可能正是您要找的东西。
首先使用 jspm
安装你的包。
jspm install systemjs react react-dom
然后link并配置SystemJS。
<script src='jspm_packages/system.js'></script>
<script>
System.import('app.js');
</script>
现在在app.js
里面你可以写CommonJS风格的代码了。
var React = require('react');
var ReactDOM = require('react-dom');
SystemJS 将处理其余脚本的加载。如果您想进行生产构建,那么它就像 运行 jspm bundle app
.
CommonJS
您在 React 教程和其他示例中看到的对 require
的调用是针对名为 CommonJS.
您使用 require('react')
获取对 React 模块导出的值的引用(使用 npm 安装到 node_modules
中)。这意味着您需要像 Browserify 或 Webpack 这样的预浏览器构建步骤,它可以将您需要的所有模块装订在一起并输出一个大脚本文件。
RequireJS
令人困惑的是,CommonJS 和 RequireJS 使用同名函数来指定依赖项。您正在尝试使用 RequireJS require
函数,就好像您在使用 CommonJS 模块一样。
如果你想用 RequireJS 导入 React,那么你需要像这样:
<script src="js/require.js"></script>
<script>
require.config({
'baseUrl' : 'Scripts/',
});
require(["react-0.14.7", "react-dom-0.14.7"],
function(React, ReactDOM) {
console.log(React, ReactDOM);
});
</script>
当您的代码执行时,RequireJS 将关闭并为您指定的模块添加脚本标签。然后一旦这些脚本加载完成,它将把它们导出的值传递给回调函数供您使用。
看看这个项目
https://github.com/ORESoftware/hr4r2
它正在做你想做的事——它正在使用 RequireJS + React + TypeScript。它正在做服务器端渲染并且是一个SPA。
此项目未使用 Webpack 或 Babel。
这是 Redux 的创建者 Dan Abramov 本人的一个示例,他在其中制作了一个 React 应用程序,而没有使用 webpack、babel 或 browserify。
http://codepen.io/gaearon/pen/ZpvBNJ?editors=0010
在你的 HTML 文件中你的 body 标签中写入
<div id="root">
<!-- This div's content will be managed by React. -->
</div>
然后在你的脚本标签中输入这个
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('root')
);
PS 确保将这 2 个库放在顶部
https://cdnjs.cloudflare.com/ajax/libs/react/15.3.1/react.js
https://cdnjs.cloudflare.com/ajax/libs/react/15.3.1/react-dom.js
希望对您有所帮助。