弁言
一个web服务器宣布html文件,经由过程CGI接口,顺序也能够对要求/回应数据流举行加工。那web服务器能够宣布一个class类吗?
宣布一个class类是什么意义?
当你用nodejs在后端写了一个class类,愿望被前端或长途其他nodejs挪用。这时候你该怎么办?……还得一阵猛忙活,然后声称供应了一个什么RESTful之类的接口。
把class直接宣布行不行?就是在浏览器中或长途其他nodejs中直接挪用,就像在你的后端直接挪用一个模块一样。这就叫宣布一个class 类。
先看一个演示顺序
演示的例子固然叫HelloWorld了:-),这是通例。
编写一个类HelloWorld.es6
class HelloWorld {
constructor() {
this.greeting = 'Hello World!';
}
welcome(callback) {
callback(null, this.greeting);
}
}
export default HelloWorld;
运用babel转成ES5
$ babel HelloWorld.es6 -o HelloWorld.js
假如你还不会运用babel,那就运用babel官网转吧!转完的文件叫HelloWorld.js
如今要把你写好的class宣布出去了!
# npm install nodeway -g
装置nodeway,这一步应当没什么可诠释的。能诠释的就是这个名字,还不想诠释。
运用nodeway敕令,把你写的HelloWorld这个类宣布出去吧!
# nodeway --class HelloWorld.js --host 0.0.0.0 --port 8080 --docs . &
这句的意义是启动一个Web Server,把HelloWorld.js宣布出去。
好了,如今剩下的就是测试了。
编写测试顺序 index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HelloWorld</title>
<script type="text/javascript" src="/HelloWorld.js"></script>
</head>
<body>
<script>
var api = new HelloWorld.default;
api.welcome(function(err, greeting) {
document.write(greeting);
});
</script>
</body>
</html>
用浏览器接见你写的这个index.html文件,就能够看到你宣布胜利了。
简朴吧?还能再简朴点不?能呀!假如你懒得装置nodeway包,那就把下面内容贴到你的Web服务器下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HelloWorld</title>
<script type="text/javascript" src="http://yishizhencang.com:8080/HelloWorld.js"></script>
</head>
<body>
<script>
var api = new HelloWorld.default;
api.welcome(function(err, greeting) {
document.write(greeting);
});
</script>
</body>
</html>
这有什么差别?本来<script>标签中src变了!长途实行我宣布的HelloWorld类?这是跨域接见呀?这也能行?
固然没问题了,你尝尝就知道了。
另有什么新颖的吗?有啊!你能够用node长途挪用HelloWorld类。vi welcome.js,写以下代码:
var requireFromUrl = require('require-from-url');
requireFromUrl("http://yishizhencang.com:8080/HelloWorld.js")
.on('Resolved', function(next, HelloWorld) {
var api = new HelloWorld.default;
api.welcome(function(err, greeting) {
console.log(greeting);
});
})
.on('Rejected', function(next, e) {
console.log(e);
});
requireFromUrl是什么?就是require!只不过是从URL中加载。
$ npm install require-from-url
$ node welcome.js
以上这个例子,能够经由过程以下敕令下载
$ npm install nodeway-helloworld
说完了?另有呢!
nodeway同时支撑json-rpc,如许用别的言语接见也是没问题的。假如你有这方面的需求,就检察一下json-rpc的文档,编写个json-rpc客户端顺序就好了。