可以对file://协议做出反应吗?

时间:2016-10-26 17:51:10

标签: javascript ajax templates reactjs protocols

我使用基本的jQuery和lodash模板开发了几个工具。

我意识到使用那些Ajax调用的库在文件系统上不起作用,并在我尝试使用ajax加载模板时出现此错误:

  

XMLHttpRequest无法加载文件:///Users/Pro/Google%20Drive/dev/tasks/webDevEnvironment/public/html/pipeline-doc/templates/content-one-variable.html。
  交叉源请求仅支持协议方案:http,数据,chrome,chrome-extension,https,chrome-extension-resource

我非常喜欢React的理念,对于我正在构建的小工具来说,这可能有点过分。在我开始重新编码所有内容之前,我想知道React应用程序是否在后台使用了ajax模板,或者是否可以在脚本标记中加载所有内容?

我刚刚开始使用React,根据我的理解,使用file://协议不会有问题......但我更愿意确定!

1 个答案:

答案 0 :(得分:2)

在最基本的情况下,它不会有问题。根据你用它做的事情,它可能很快就会遇到麻烦。

一个简单的解决方法是不要在file://协议上执行此操作。您可以轻松地在节点中创建类似轻量级express服务器的内容,然后允许您对http://协议进行操作并回避整个问题。

var express = require('express'),
    app = express();

app.use(express.static('source-files-directory-goes-here'));
app.listen(3000, function () { console.log('Listening on port 3000'); });

将其丢弃在名为server.js之类的文件中,然后您可以使用node server.js运行该文件,它将从http://localhost:3000目录中的任何文件中搜索文件。您只需使用npm install express即可获得它。

如果你想要一个package.json,如果你要使用React,你会想要它,你可以这样:

{
    "dependencies": {
        "express": "latest"
    },
    "scripts": {
        "start": "node server.js"
    }
}

并使用npm start运行。