GVKun编程网logo

reactjs – 没有webpack或browserify的React(路由器)(react怎么配置路由)

19

如果您想了解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怎么配置路由)

reactjs – 没有webpack或browserify的React(路由器)(react怎么配置路由)

是否可以使用与ReactRouter的反应,而不使用browserify或webpack.
我遵循 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>
当您使用CDN中的预构建版本时,库将导出到window.ReactRouter.因此,Route在window.ReactRouter.Route上定义.

由于React Router也依赖于React,因此使用CDN /浏览器构建还需要在窗口上使用React .Ract.

也就是说,您链接到的CDN版本本身是使用webpack生成的,因此我不希望您获得任何文件大小的改进.您可以查看browserify包上的缩小/死代码消除,看它是否会减小文件大小.

Browserify vs. Webpack

Browserify vs. Webpack

这让人吃惊,让人有些生畏,JavaScript和它的工具的世界可以在转眼之间改变.但是,现在,npm和browserify让我们变得相当不错.我 们拥有成千上万个有用的函数和模块,他们组合在一起,提升了Unix哲学的小巧和非耦合的工具,模糊了"浏览器"和"客户"的界限 (例如,查看headless-gl).并且,更惊奇的是,我们可以使用这些模块,而不用担心路径,版本地狱(version hell)或累赘的配置文件.

Gulp / Grunt , browserify / webpack , seajs / require

Gulp / Grunt , browserify / webpack , seajs / require

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代
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+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语法错误

reactjs – IE11中的Webpack,Babel和React语法错误

我在Internet Explorer 11中的React Redux项目中遇到语法错误,但我不知道为什么会导致它.

我正在使用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中的错误.

使用npm install babel-preset-env –save-dev安装 babel-preset-env并在.babelrc中使用以下配置:
{
  "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语法错误的相关信息,可以在本站进行搜索。

本文标签: