为了账号安全,请及时绑定邮箱和手机立即绑定

react app中可以导入第三方js文件吗?

react app中可以导入第三方js文件吗?

慕尼黑5688855 2022-01-13 16:24:21
我有一个来自另一个项目(mvc)的 js 文件,它用 extJS 创建了一个简单的表。我正在使用导航栏和侧边栏创建一个反应应用程序(create-react-app),我的目标是尝试为反应应用程序的主要内容导入该 js 文件.js 文件:Ext.Loader.setConfig({ enabled: true });Ext.define('TestExtJsPanel', {    extend: 'Ext.grid.Panel',    alias: 'widget.testGrid',    title: 'Simpsons',    store: Ext.data.StoreManager.lookup('simpsonsStore'),    columns: [        { header: 'Name', dataIndex: 'name' },        { header: 'Email', dataIndex: 'email', flex: 1 },        { header: 'Phone', dataIndex: 'phone' }    ],    height: 200,    width: 400,    viewConfig: {        trackOver: true,        stripeRows: true,        markDirty: false    },    initComponent: function () {        var me = this;        me.store = Ext.create('Ext.data.Store', {            storeId: 'simpsonsStore',            fields: ['name', 'email', 'phone'],            data: {                'items': [                    { 'name': 'Lisa', "email": "lisa@simpsons.com", "phone": "555-111-1224" },                    { 'name': 'Bart', "email": "bart@simpsons.com", "phone": "555-222-1234" },                    { 'name': 'Homer', "email": "home@simpsons.com", "phone": "555-222-1244" },                    { 'name': 'Marge', "email": "marge@simpsons.com", "phone": "555-222-1254" }                ]            },            proxy: {                type: 'memory',                reader: {                    type: 'json',                    root: 'items'                }            }        });        this.callParent(arguments);    }});Ext.Loader.setConfig({ enabled: true });Ext.define('TestExtJsPanel', {    extend: 'Ext.grid.Panel',    alias: 'widget.testGrid',    title: 'Simpsons',    store: Ext.data.StoreManager.lookup('simpsonsStore'),    columns: [        { header: 'Name', dataIndex: 'name' },        { header: 'Email', dataIndex: 'email', flex: 1 },        { header: 'Phone', dataIndex: 'phone' }    ], 我的问题是:可以将此 js 文件导入反应应用程序吗?我需要对 js 文件进行一些更改才能导入它吗?
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您可以访问使用var其他脚本定义的任何变量(在您的脚本之前连接并且未标记为async)。


好吧,如果你在你的 react-app 代码之前连接你的 js 文件,你可以访问所有使用var.


例如


索引.html


<html>

...

  <body>

    <script src="js-file.js" />

    <script src="react-code.js" />

  </body>

</html>

js-file.js


var mySharedVariable = "Example";

react-code.js 它是 webpack 包(的 js 结果npm run build)


...

export class MyComponent extends Component {

  render() {

    return mySharedVariable;

  }

}

...

MyComponent 将呈现字符串“示例”


如果您使用 typescript,则必须在使用 like 之前声明 mySharedVariable


declare let mySharedVariable: string;

为什么不能使用async脚本?你可以阅读这篇文章


UPD


所以,让我们一步一步地一起做


1) 使用 cra 创建反应应用


npx create-react-app my-app

2)创建文件external.js并将其放在公共文件夹(index.html旁边)(如果您有远程文件,请通过此步骤)


var external = "external";

3) 修改你的 index.html 文件(在结束 body 标签之前添加一行)


<body>

  <noscript>You need to enable JavaScript to run this app.</noscript>

  <div id="root"></div>

  <!--

    This HTML file is a template.

    If you open it directly in the browser, you will see an empty page.


    You can add webfonts, meta tags, or analytics to this file.

    The build step will place the bundled scripts into the <body> tag.


    To begin the development, run `npm start` or `yarn start`.

    To create a production bundle, use `npm run build` or `yarn build`.

  -->


  <!-- src is path to your js file -->

  <script src="external.js"></script> <!-- add this line -->

</body>

4) 修改你的 App.js 文件


import React from 'react';

import './App.css';


function App() {

  return (

      <h1>{external}</h1>

  );

}


export default App;


5)让我们启动你的应用程序


npm run start


查看完整回答
反对 回复 2022-01-13
  • 1 回答
  • 0 关注
  • 300 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信