Angular2的相关资料

UI类库

老牌的ng-bootstrap http://valor-software.com/ngx-bootstrap/#/

material angular https://material.angular.io/components 官方产品 目前在beta状态

ionic https://ionicframework.com/ 移动端适配的几乎唯一选择

好的代码示例

管理门户 https://github.com/akveo/ng2-admin

工具的使用,创建新工程

https://github.com/angular/angular-cli

先使用Npm  i -g angular-cli 安装

安装之后比较常用的就是

ng new

The Angular CLI makes it easy to create an application that already works, right out of the box. It already follows our best practices!

ng generate

Generate components, routes, services and pipes with a simple command. The CLI will also create simple test shells for all of these.

ng serve

Easily test your app locally while developing.

装完可以直接用ng– help看一下

第二个方案是使用 webpack

https://github.com/AngularClass/angular2-webpack-starter

发表在 爱好, 计算机与 Internet | 留下评论

去天津玩了一趟

据说所有事情都早晚会变成回忆。所以为了让回忆有趣意一点,我来记述一下这两天去天津旅游的行程。

第一天早晨乘坐九点多的高铁一路顺利的到达天津。下车之后出错了站台,导致后来选错了酒店。

在酒店踌躇半天之后跑去看了张学良故居

以上是张学良故居的一角。

中午在金牌餐厅吃了八珍豆腐。这个菜很好吃


下午去听了人民公园里的西岸相声。我常来听,主要是为了发掘自己有多高明


晚上在听一居吃了天津老爆三


第二天逛了大悲禅院


中午吃了包子

发表在 Uncategorized | 留下评论

windows10下全局代理的解决方案

shadowssocks开的本地代理,之后开的就是一个http和一个socks5的代理

接着用proxifier就可以把shadowsocks代理转成本地全局代理。算是本地应用代理。以后本地应用就会自动走这个代理了。

发表在 计算机与 Internet | 留下评论

HTML5实例更新

http://howardsu.oicp.net/html5

下面的geo 写了几个地理的例子在

FILE api写了几个文件访问的例子

下了一个video的例子

在 http://localhost:3000/html5/video/webgl/index.html

以及写了一个新的video的ppt可以作为补充

 

发表在 爱好, 计算机与 Internet, Uncategorized | 留下评论

Reload Express.js application on file save

When you start with Node.js and Express you are probably friends with
CTRL + S (Save file)

CMD + Tab (Mac, switch windows)

CTRL + C (Stop server/application in terminal)

UP ARROW then ENTER (Restart server/application)

However there are tools to do this for you, one is Nodemon, and you can install this globably with
npm install -g nodemon
For your standard Node.js app which you start with node server.js you change that call to nodemon server.js. Now, each time you make a change Nodemon will handle restarting the app … think of it frantically calling CTRL+C, UP ARROW & ENTER in the background for you.
For Express.js the setup is slightly different. From the terminal you would use something like this (Mac/Linux) npm start or DEBUG=myApp npm start to get your project up and running on http://localhost:3000. To use Nodemon here you need to edit your projects package.json file so it looks like this

  “scripts”:{

    // “start”: “node ./bin/www”

    “start”: “nodemon ./bin/www”

   }
Once that’s done, start your Express.js project the normal way and each time you make a change you can go straight to the browser and refresh the page.

发表在 Uncategorized | 留下评论

Nodejs里的异步编程模型

三套机制

  • 事件发布/订阅模式。
  • Promise/Deferred模式。
  • 流程控制库。

事件发布/订阅模式的操作极其简单,示例代码如下:

// 订阅
emitter.on("event1", function (message) {
  console.log(message);
});
// 发布
emitter.emit('event1', "I am message!");

可以看到,订阅事件就是一个高阶函数的应用。事件发布/订阅模式可以实现一个事件与多个回调函数的关联,这些回调函数又称为事件侦听器。通过emit()发布事件后,消息会立即传递给当前事件的所有侦听器执行。侦听器可以很灵活地添加和删除,使得事件和具体处理逻辑之间可以很轻松地关联和解耦。

事件发布/订阅模式自身并无同步和异步调用的问题,但在Node中,emit()调用多半是伴随事件循环而异步触发的,所以我们说事件发布/订阅广泛应用于异步编程。

事件发布/订阅模式常常用来解耦业务逻辑,事件发布者无须关注订阅的侦听器如何实现业务逻辑,甚至不用关注有多少个侦听器存在,数据通过消息的方式可以很灵活地传递。在一些典型场景中,可以通过事件发布/订阅模式进行组件封装,将不变的部分封装在组件内部,将容易变化、需自定义的部分通过事件暴露给外部处理,这是一种典型的逻辑分离方式。在这种事件发布/订阅式组件中,事件的设计非常重要,因为它关乎外部调用组件时是否优雅,从某种角度来说事件的设计就是组件的接口设计。

从另一个角度来看,事件侦听器模式也是一种钩子(hook)机制,利用钩子导出内部数据或状态给外部的调用者。Node中的很多对象大多具有黑盒的特点,功能点较少,如果不通过事件钩子的形式,我们就无法获取对象在运行期间的中间值或内部状态。这种通过事件钩子的方式,可以使编程者不用关注组件是如何启动和执行的,只需关注在需要的事件点上即可。下面的HTTP请求是典型场景:

var options = {
  host: 'www.google.com',
  port: 80,
  path: '/upload',
  method: 'POST'
};
var req = http.request(options, function (res) {
  console.log('STATUS: ' + res.statusCode);
  console.log('HEADERS: ' + JSON.stringify(res.headers));
  res.setEncoding('utf8');
  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
  res.on('end', function () {
    // TODO
  });
});
req.on('error', function (e) {
  console.log('problem with request: ' + e.message);
});
// write data to request body
req.write('data\n');
req.write('data\n');
req.end();
  • 如果对一个事件添加了超过10个侦听器,将会得到一条警告。这一处设计与Node自身单线程运行有关,设计者认为侦听器太多可能导致内存泄漏,所以存在这样一条警告。调用 emitter.setMaxListeners(0);可以将这个限制去掉。另一方面,由于事件发布会引起一系列侦听器执行,如果事件相关的侦听器过多,可能存在过多占用CPU的情景。
  • 为了处理异常,EventEmitter对象对error事件进行了特殊对待。如果运行期间的错误触发了error事件,EventEmitter会检查是否有对error事件添加过侦听器。如果添加了,这个错误将会交由该侦听器处理,否则这个错误将会作为异常抛出。如果外部没有捕获这个异常,将会引起线程退出。一个健壮的EventEmitter实例应该对error事件做处理。

 

发表在 Uncategorized | 留下评论

宁波软件园angularjs培训

IMG_1847.JPG东海蓝帆公司

发表在 培训记录 | 留下评论