如果您想了解reactjs–没有webpack或browserify的React(路由器)和react怎么配置路由的知识,那么本篇文章将是您的不二之选。我们将深入剖析reactjs–没有webpack
如果您想了解reactjs – 没有webpack或browserify的React(路由器)和react怎么配置路由的知识,那么本篇文章将是您的不二之选。我们将深入剖析reactjs – 没有webpack或browserify的React(路由器)的各个方面,并为您解答react怎么配置路由的疑在这篇文章中,我们将为您介绍reactjs – 没有webpack或browserify的React(路由器)的相关知识,同时也会详细的解释react怎么配置路由的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- reactjs – 没有webpack或browserify的React(路由器)(react怎么配置路由)
- Browserify vs. Webpack
- Gulp / Grunt , browserify / webpack , seajs / require
- react+webpack+babel+webpcak-dev-server+react-router-dom从无到有
- reactjs – IE11中的Webpack,Babel和React语法错误
reactjs – 没有webpack或browserify的React(路由器)(react怎么配置路由)
我遵循 http://rackt.github.io/react-router的文档,他们需要react和react-router(require(‘react-router’);).如果我使用browerifly我生成的捆绑大约是1MB文件大小,这听起来很多.
那么有可能让remtrouter与包括https://cdnjs.cloudflare.com/ajax/libs/react-router/0.13.3/ReactRouter.js这样的CDN的编译JS一起工作,而不是自己捆绑所有需求吗?如果我尝试使其与CDN一起使用,我会收到一条未定义Route的错误.但它看起来像是在cdn文件中导出的.
我想编译我的JSX / ES6反应组件包括ReactRouter并从cdn反应JS文件,只将我的组件捆绑到一个新的js文件中.
这是可能的,还是浏览器和webpack正确设置项目的方法? (我看了几个github回购).我有些疑惑,因为http://rackt.github.io/react-router/没有安装指南
喜欢这个伪html:
<head> CND :include react,react-router my code combinded.js </head>
由于React Router也依赖于React,因此使用CDN /浏览器构建还需要在窗口上使用React .Ract.
也就是说,您链接到的CDN版本本身是使用webpack生成的,因此我不希望您获得任何文件大小的改进.您可以查看browserify包上的缩小/死代码消除,看它是否会减小文件大小.
Browserify vs. Webpack
这让人吃惊,让人有些生畏,JavaScript和它的工具的世界可以在转眼之间改变.但是,现在,npm和browserify让我们变得相当不错.我 们拥有成千上万个有用的函数和模块,他们组合在一起,提升了Unix哲学的小巧和非耦合的工具,模糊了"浏览器"和"客户"的界限 (例如,查看headless-gl).并且,更惊奇的是,我们可以使用这些模块,而不用担心路径,版本地狱(version hell)或累赘的配置文件.
Gulp / Grunt , browserify / webpack , seajs / require

1.Gulp应该和Grunt比较,他们的区别我就不说了,说说用处吧。Gulp / Grunt 是一种工具,能够优化前端工作流程。比如自动刷新页面、combo、压缩css、js、编译less等等。简单来说,就是使用Gulp/Grunt,然后配置你需要的插件,就可以把以前需要手工做的事情让它帮你做了。 2.说到 browserify / webpack ,那还要说到 seajs / requirejs 。这四个都是JS模块化的方案。其中seajs / require 是一种类型,browserify / webpack 是另一种类型。 3.seajs / require : 是一种在线"编译" 模块的方案,相当于在页面上加载一个 CMD/AMD 解释器。这样浏览器就认识了 define、exports、module 这些东西。也就实现了模块化。 4.browserify / webpack : 是一个预编译模块的方案,相比于上面 ,这个方案更加智能。没用过browserify,这里以webpack为例。首先,它是预编译的,不需要在浏览器中加载解释器。另外,你在本地直接写JS,不管是 AMD / CMD / ES6 风格的模块化,它都能认识,并且编译成浏览器认识的JS。 这样就知道,Gulp是一个工具,而webpack等等是模块化方案。Gulp也可以配置seajs、requirejs甚至webpack的插件。
react+webpack+babel+webpcak-dev-server+react-router-dom从无到有
react-demo
两个目标:
- 手动搭建react脚手架:react、bable、webpack、react-router-dom、webpack-dev-server
- 理解webpack从无到有打包原理
手动搭建react脚手架项目地址
有坑的地方会特别说明,因为好多文章都没有给出babel和webpack-dev-server的版本,所以在搭建过程中遇到比较多的问题。
1.react react react-dom
2.babel babel-loader babel-core babel-presets-es2015|stage-0|react
babel 这里的坑:注意babel的版本号,比如运行时报错babel/core找不到等等,需要降低babel的版本,
注意webpack.config.js配置文件中的loader书写,需要从webpack官网找,有的博客写的不对会造成错误
注意需要有一个.babelrc的文件
3.webpack
4.webpack-dev-server
使用webpack-dev-server --hot --inline --config webpack.config.js 运行报错,注意降低webpack-dev-server的版本号
5.react-router-dom
reactjs – IE11中的Webpack,Babel和React语法错误
我正在使用Webpack和Babel来编译它.
我尝试使用babel-polyfill和babel-es6-polyfill,但这没有帮助.
这是我得到的错误:
SCRIPT1002: Syntax error File: app.js,Line: 70,Column: 1
第70行第1列是Webpack的eval开始的地方:
/***/ }),/* 21 */,/* 22 */ /***/ (function(module,exports,__webpack_require__) { "use strict"; eval("\n\nObject.define... <- Line 70 ^--- Column 1
这是我的webpack.config.js:
'use strict'; // Include modules and plugins const webpack = require('webpack'); const path = require('path'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); // App and build directories const APP_DIR = path.resolve(__dirname,'src/'); const BUILD_DIR = path.resolve(__dirname,'public'); // Extract sass from the application,see index.jsx const extractSass = new ExtractTextPlugin({ filename: 'css/[name].css' }); // The config file to load let env = (process.env.NODE_ENV || 'dev').toLowerCase(); let configFile = path.resolve(__dirname,'config/config.' + env + '.json'); // Default config file if not found const defaultConfigFile = path.resolve(__dirname,'config/config.dev.json'); /* * Config to be injected into the app * Note that JSON files are parsed upon requiring */ let config; /* * Get the actual config */ try { config = require(configFile); console.log('Loaded config file ' + configFile); } catch (e) { config = require(defaultConfigFile); console.log('Fallen back to default config file'); } // The actual webpack config const webpackConfig = { entry: { // The app entry point app: APP_DIR + '/index.jsx',// vendor files will be used for bundling,they will not be compiled into the app itself vendor: [ 'axios','prop-types','react','reactstrap','react-chartjs-2','react-dom','react-redux','react-router','react-router-dom','redux','sprintf-js',] },output: { path: BUILD_DIR,filename: 'js/app.js' },module: { /* * These are loaders for webpack,these will assist with compilation */ loaders: [ { /* * Use Babel to compile JS and JSX files * See .babelrc */ test: /\.jsx?/,include: APP_DIR,loader: 'babel-loader' } ],rules: [ { /* * Sass/Scss compilation rules */ test: /\.scss$/,use: extractSass.extract({ use: [ { loader: 'css-loader' },{ loader: 'sass-loader' } ],fallback: 'style-loader' }) },{ /* * JS(X) compilation rules * We need this,otherwise Webpack will crash during compile time */ test: /\.jsx?/,loader: 'babel-loader' } ] },plugins: [ /* * The CommonsChunkPlugin is responsible to create bundles out of commonly used modules * E.g. React,React Dom,etc */ new webpack.optimize.CommonsChunkPlugin({ name: 'vendor',// See entry.vendor filename: 'js/vendor.bundle.js' }),extractSass ],externals: { /* * The config external will be available to the app by using require('config') */ 'config': JSON.stringify(config) },devServer: { contentBase: BUILD_DIR,compress: true,port: 7600,inline: true,},}; if (env === 'production') { webpackConfig.devtool = 'hidden-source-map'; } else { webpackConfig.devtool = 'eval-source-map'; } module.exports = webpackConfig;
我的依赖项:
"dependencies": { "axios": "^0.16.1","babel-core": "^6.24.0","babel-loader": "^6.4.1","babel-polyfill": "6.5.1","babel-preset-es2015": "^6.24.0","babel-preset-react": "^6.23.0","babel-preset-stage-1": "^6.24.1","chart.js": "^2.6.0","cross-env": "^3.2.4","css-loader": "^0.27.3","enumify": "^1.0.4","extract-text-webpack-plugin": "^2.1.0","history": "^4.6.3","ip": "^1.1.5","lodash": "^4.17.4","moment": "^2.18.1","node-sass": "^4.5.1","prop-types": "^15.5.10","react": "^15.4.2","react-addons-css-transition-group": "^15.5.2","react-addons-transition-group": "^15.5.2","react-chartjs-2": "^2.1.0","react-dom": "^15.4.2","react-js-pagination": "^2.1.0","react-redux": "^5.0.4","react-router": "^4.1.1","react-router-dom": "^4.1.1","reactstrap": "^4.5.0","redux": "^3.6.0","sass-loader": "^6.0.3","sprintf-js": "^1.1.0","style-loader": "^0.16.0","webpack": "^2.3.2" },"devDependencies": { "eslint-plugin-react": "^6.10.3","webpack-dev-server": "^2.5.1" }
我的.babelrc:
{ "presets" : [ "es2015","react","stage-1" ] }
编辑1
按照BANANENMANNFRAU的回答,我添加了babel-preset-env并编辑了我的.babelrc如下:
{ "presets" : [ [ "env",{ "targets": { "browsers": [ "last 5 versions","ie >= 11" ] } }],"es2015","stage-1" ] }
这没有帮助,它仍然导致IE11中的错误.
{ "presets" : [ ["env",{ "targets": { "browsers": ["last 2 versions","ie >= 11"] } }],] }
您还可以从配置中删除以下部分:
loaders: [ { /* * Use Babel to compile JS and JSX files * See .babelrc */ test: /\.jsx?/,
检查文档here
我们今天的关于reactjs – 没有webpack或browserify的React(路由器)和react怎么配置路由的分享就到这里,谢谢您的阅读,如果想了解更多关于Browserify vs. Webpack、Gulp / Grunt , browserify / webpack , seajs / require、react+webpack+babel+webpcak-dev-server+react-router-dom从无到有、reactjs – IE11中的Webpack,Babel和React语法错误的相关信息,可以在本站进行搜索。
本文标签: