后端远程调用 js 项目实现方案

2020-03-25 18:22:02 +08:00
 KevinRed

欢迎访问原文后端远程调用 js 项目实现方案 -kevin 的博客 欢迎访问原文后端远程调用 js 项目实现方案 -kevin 的博客 欢迎访问原文后端远程调用 js 项目实现方案 -kevin 的博客

js 运行速度快占用性能小,某些模块独立成 js 方法是很好的选择,可是 js 需要依赖浏览器运行

这就导致使用接口远程调用 js 方法不能实现,经过一番查找发现了 node 这个大杀器

下面就来介绍一下如何用后端调用 js 方法获取返回值

主要思想就是搭建 nodejs 服务器,在 nodejs 项目中引用我们要调用的 js,并格式化返回值为 json 返回

先要来说说 nodejs,简单介绍如何搭建一个 nodejs 服务器,直接上代码

这一步需要安装 node,详细可见 node 的安装与使用

//service.js

var http = require('http');
var url = require("url");
var querystring = require("querystring");
http.createServer(function (request, response) {

   response.writeHead(200, {'Content-Type': 'application/json'});
   var arg = url.parse(request.url).query;

   var params = querystring.parse(arg);//url 后拼的参数
    
  
  
}).listen(8000);//监听端口

console.log('hello node');

node service.js 即可运行起来

没错就是这么简单,后通过 http://127.0.0.1:8000 即可访问

还能再后边拼参数。如 http://127.0.0.1:8000?param=hello

接下来就可以改造方法了

假设有个 js 文件

//helloNodejs.js

function hello() {
    var data = {'name': 'kevin', 'say' : 'hello nodejs'};
    return JSON.stringify(data);
}

我们对它稍微改造,让它能被 service.js 调用

//方案 1

module.exports = (function() {
    var data = {'name': 'kevin', 'say' : 'hello nodejs'};
    return JSON.stringify(data);
})

对应的 service.js 调用写法

var helloNodejs = require('./helloNode');
var result = helloNodejs();
response.end(result);

此方案适合 js 文件中仅有一个方法,如果有多个看下面

//方案 2

function hello() {
    var data = {'name': 'kevin', 'say' : 'hello nodejs'};
    return JSON.stringify(data);
}

exports.hello = hello

对应的 service.js 调用写法

var helloNodejs = require('./helloNode');
var result = helloNodejs.hello();
response.end(result);

看到这是不是想大呼一声 js 牛批呀

3241 次点击
所在节点    程序员
37 条回复
ironMan1995
2020-03-25 18:40:58 +08:00
这不就是模块么
gimp
2020-03-25 18:42:43 +08:00
。。。i 了 i 了
rrfeng
2020-03-25 18:47:58 +08:00
????????
zeromake
2020-03-25 18:48:39 +08:00
怎么说呢?欢迎回到地球,顺便说个事带 dom 操作 js 在 node 不好运行
ayase252
2020-03-25 18:48:47 +08:00
??????
Hilong
2020-03-25 18:49:01 +08:00
牛批,我写了这么多年的 js 才发现原来这么牛批啊
wangxiaoaer
2020-03-25 18:55:18 +08:00
需要铜币就真说啊
renmu
2020-03-25 19:09:13 +08:00
讲个笑话,js 运行速度快
oneisall8955
2020-03-25 19:14:55 +08:00
好的知道了,调用 node 的 http 请求
rockjike
2020-03-25 20:49:26 +08:00
??
Xusually
2020-03-25 20:54:51 +08:00
缓慢打出一个问号。。。。。。?
ben1024
2020-03-25 20:55:33 +08:00
创世主??
jrtzxh020
2020-03-25 21:13:41 +08:00
??????现在是 2020 年???
ardour
2020-03-25 21:18:01 +08:00
看到这篇帖子我还以为走错进了 CSDN
KevinRed
2020-03-25 21:26:29 +08:00
@ironMan1995
@gimp
@rrfeng
@zeromake
@ayase252
@Hilong
@wangxiaoaer
@renmu
@oneisall8955
@rockjike
@Xusually
@ben1024
@jrtzxh020
@ardour

大佬们轻喷啊,小弟搞 Android 的,刚接触 nodejs
起因是在 github 上发现了一个 js 项目,想用 php 调用,发现写成接口调不通,最后发现必须有浏览器支持,几番搜索找到 nodejs,发现网上很少有介绍如何用 nodejs 调用普通 js 方法的,才写的这个文章
catch
2020-03-25 21:29:59 +08:00
这种文章还是少写吧(像不懂计算机基础的小白),高质量的可以写
tinkerer
2020-03-25 21:32:14 +08:00
总之,还是鼓励努力学习的
xy90321
2020-03-25 21:33:23 +08:00
JDK 8 开始支持的 nashorn 都已经快寿终正寝了…
哦对了,你不是 JDK…
zy445566
2020-03-25 21:47:41 +08:00
不仅仅,nodejs 还能做跨平台的 iOS 和 Android
KevinRed
2020-03-25 21:49:07 +08:00
@zy445566 最近在看 ReactNative,js 确实挺牛的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/656147

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX