直接宣布一个class类

弁言

一个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客户端顺序就好了。

    原文作者:一͛世͛珍͛藏͛
    原文地址: https://segmentfault.com/a/1190000004944356
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞