Javascript 在本地和沙箱外部署Vue应用程序

Javascript 在本地和沙箱外部署Vue应用程序,javascript,node.js,vue.js,zeromq,Javascript,Node.js,Vue.js,Zeromq,是否有任何方法可以在不受浏览器限制的情况下在本地部署VueJS应用程序 我希望用户能够从命令行调用应用程序,例如app\u name--port 6000,然后能够从http://127.0.0.1:6000或他们选择的任何其他端口。重要的是,Vue应用程序必须能够导入和使用本机NodeJS模块,例如fs和zeromqVuejs代码必须在您无权访问硬件的浏览器环境中运行。所以基本上你有三个选择来实现这一点: 1.使用电子 Electron为您提供了一个chromium实例,您的UI(Vuejs)

是否有任何方法可以在不受浏览器限制的情况下在本地部署VueJS应用程序


我希望用户能够从命令行调用应用程序,例如
app\u name--port 6000
,然后能够从
http://127.0.0.1:6000
或他们选择的任何其他端口。重要的是,Vue应用程序必须能够导入和使用本机NodeJS模块,例如
fs
zeromq

Vuejs代码必须在您无权访问硬件的浏览器环境中运行。所以基本上你有三个选择来实现这一点:

1.使用电子 Electron为您提供了一个chromium实例,您的UI(Vuejs)代码可以在其中运行,以及一个单独的进程,您可以在其中使用nodejs访问硬件

2.使用节点创建一个简单的http服务器 在这种情况下,您需要使用nodejs创建一个服务器。例如,您可以创建一个名为
server.js
的文件,如下所示:

const http = require('http');
const fs = require('fs')

http.createServer((req, res) => {

   // Do something with fs
   const data = fs.readFileSync('path/to/some/file');

   // return back the data with http
   http.writeHead(200, {ContentType: 'text/plain'})
   http.write(data);
}).listen(8000)
export default {
  data () {
    return {
      myData: null
    }
  },
  methods: {
    onSomeAction () {
      const {data} = await axios.get('localhost:8000')
      this.myData = data;
    }
  }
}
并使用http获取Vuejs应用程序中的数据,如下所示:

const http = require('http');
const fs = require('fs')

http.createServer((req, res) => {

   // Do something with fs
   const data = fs.readFileSync('path/to/some/file');

   // return back the data with http
   http.writeHead(200, {ContentType: 'text/plain'})
   http.write(data);
}).listen(8000)
export default {
  data () {
    return {
      myData: null
    }
  },
  methods: {
    onSomeAction () {
      const {data} = await axios.get('localhost:8000')
      this.myData = data;
    }
  }
}
现在,在您的package.json中,当调用
npm serve
时,您可以将其同时运行:

...

"scripts": {

  ...

  "serve": "node server.js & vue-cli-service serve"
}
3.使用Nuxt
如果您需要对硬件执行一次操作,在渲染之前您可以使用Nuxt访问硬件,然后再渲染Vuejs应用程序并将其交给浏览器。

请检查此@Boussadjrahim谢谢您的评论,但链接建议使用的是辅助ExpressJS过程。VueJS无权访问本机模块,API接口需要位于两者之间。VueJS或任何其他前端框架,只要在浏览器环境中运行,就无法直接访问硬件。不过,您可以使用Electron将Vuejs应用程序包装到桌面应用程序中。它还为您提供了一个单独的进程,专门用于访问您的硬件。@evolon我使用的是Electron,但它附带了大量我不需要的东西。然后您可能应该启动一个简单的节点服务器,并通过http从浏览器发出请求。