如何使用Web包在React JS中从外部JS文件导入对象

Mr.*_*ict 9 javascript ecmascript-6 reactjs webpack babeljs

我正在建立我对React JS的了解,我想导入/包含一些外部JS文件,这些文件只包含一个对象/对象数组.我已经在jQuery,Vanilla JS甚至Angular JS中完成了这个.甜!!!

如何在React JS中实现相同的功能.

我有以下作为我的index.html:

<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Hello React</title>
    </head>
    <body>
        <div id="hello"></div>
        <div id="world"></div>

        <div id="caseListing"></div>

        <script src="js/bundle.js"></script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

和我的main.js(条目文件)如下:

import Hello from './jsx/hello.jsx';
import World from './jsx/world.jsx';

var $ = require('./lib/jquery.js');
window.jQuery = $;
window.$ = $;

var Jobs = require('./data/jobs.js');
console.log('Jobs:', Jobs);
Run Code Online (Sandbox Code Playgroud)

在这里,我有Jobs.js:

var Jobs = (function () {
    "use strict";
    return {
        "jobs": [
            {
                "jobType": "Web developer",
                "desc": "Creates website"
            },
            {
                "jobType": "Bin Man",
                "desc": "Collects bins"
            }
        ]
    };
}());
Run Code Online (Sandbox Code Playgroud)

只是为了衡量,我的webpack.config.js看起来像这样:

var path = require('path');
var webpack = require('webpack');

module.exports = {
    entry: [
        './js/main.js'
    ],
    output: {
        path: __dirname,
        filename: 'js/bundle.js'
    },
    module: {
        loaders: [
            {
                test: /.jsx?$/,
                loader: 'babel-loader',
                exclude: /node_modules/,
                query: {
                    presets: [
                        'es2015',
                        'react'
                    ]
                }
            }
        ]
    }
};
Run Code Online (Sandbox Code Playgroud)

所有帮助将不胜感激.:)

Ben*_*ger 19

您需要从jobs.js导出作业,以便将其导入另一个模块.如果只是导出静态数据,jobs.js不需要是一个函数.所以,你可以让jobs.js看起来像这样:

export default {
    jobs: [
        {
            jobType: "Web developer",
            desc: "Creates website"
        },
        {
            jobType: "Bin Man",
            desc: "Collects bins"
        }
    ]
};
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样导入它:

import Jobs from './data/jobs.js';
Run Code Online (Sandbox Code Playgroud)

要么:

var Jobs = require('./data/jobs.js').default;
Run Code Online (Sandbox Code Playgroud)

如果你想要使用普通的commonjs语法,那么你可以像这样制作jobs.js:

module.exports = {
    jobs: [
        {
            jobType: "Web developer",
            desc: "Creates website"
        },
        {
            jobType: "Bin Man",
            desc: "Collects bins"
        }
    ]
};
Run Code Online (Sandbox Code Playgroud)

这允许你这样要求:

var Jobs = require('./data/jobs.js');    
Run Code Online (Sandbox Code Playgroud)


Ada*_*hou 13

假设您保存数据的文件名为"file.js."

var text = "Hello world!"; //In file.js
Run Code Online (Sandbox Code Playgroud)

在此行下方,您必须导出此变量,以便可以在React代码中导入它:

module.exports = {data: text} //In file.js
Run Code Online (Sandbox Code Playgroud)

该字符串存储为名为"data"的对象.然后,在您要使用它的文件中导入"file.js"的内容,比如说App.jsx".

import file from './file.js'; //In App.jsx
Run Code Online (Sandbox Code Playgroud)

您在另一个文件中导出的对象的内容将作为变量"file"存储在此处.然后,您可以将"file"的内容转换为对象:

var str = file.data; //"data" is the object within "file"
Run Code Online (Sandbox Code Playgroud)

您的字符串"Hello world!"现在存储在变量str中.

希望这可以帮助!