keep going with us.

为什么需要插件扩展?

  • 模块化思想

任何一个易用的系统都强调易用,易维护,模块化是nodejs的核心思想(显然并不是nodejs首先提出的);nodejs有很多优秀的package都支持插件式开发:hexo(非常流行的静态博客生成工具),egg(ali团队推出的企业级开发框架),etc…


当然模块化不仅仅限于使用插件化的方式;还有node web开发中非常常见的中间件模式。


总之,无论是oop、中间件、插件化这些设计模式都是为了更加解耦、更加抽象、更加易读、易用、易维护。

  • 扩展更加便捷

好的设计模式可以做到不需要对现有的系统代码做任何修改,对现有代码无侵入的情况下做到功能拓展。插件机制就是一种很常见的设计模式,可以用最小的成本满足大部分的应用场景。

  • 核心代码更纯粹

插件可以随时添加,任意添加,对已封装的核心代码没有任何改变,核心代码更加纯粹,保持最精简的状态,极大程度的避免了快速迭代过程中造成核心崩溃的情况。

如何实现插件扩展机制?

Read More

最近完成了一个ionic项目,服务端是用的websocket,之前还没应用过ws来做前后端的交互;经过这个项目的实践,将这段代码进行封装,并做简要的说明。

1.添加依赖[$websocket]

这个不多说,这个模块是ng1中使用websocket的不二之选,官方文档也很详细:传送门

官方实例是这么写的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
angular.module('YOUR_APP', [
'ngWebSocket' // you may also use 'angular-websocket' if you prefer
])
// WebSocket works as well
.factory('MyData', function($websocket) {
// Open a WebSocket connection
var dataStream = $websocket('ws://website.com/data');

var collection = [];

dataStream.onMessage(function(message) {
collection.push(JSON.parse(message.data));
});

var methods = {
collection: collection,
get: function() {
dataStream.send(JSON.stringify({ action: 'get' }));
}
};

return methods;
})
.controller('SomeController', function ($scope, MyData) {
$scope.MyData = MyData;
});

如果你的项目中没有复杂的交互,仅仅是在一个页面中存取数据,这样已经足够了。

但往往项目稍微复杂的应用都无法通过这个来满足。

以下是我个人的简单实现;也仅仅是一种思路的实现,仅供参考 :D

Read More
⬆︎TOP