程序员 2014-10-20 一天的奇妙之旅
发布于 10 年前 作者 leogiese 3002 次浏览 最后一次编辑是 8 年前 来自 分享

程序员 2014-10-20 一天的奇妙之旅

推荐:《精通Node.js开发》 《Angular.js视频详解》

微信号 forjs_org

周一是个好的开始,code的旅行也开始了。

上网看看有啥,这是一种好习惯,资讯的重要性,对于每个行业都很重要。

  • Angular 1.3 发布后,支持::name这种一次性绑定功能,没啥高深的,呵呵。
  • 还有一篇文章,写的是javascript 代码的发展历史,从无模块概念,到现在的 es6,写的没啥水平,说实话。
  • 有个是 jsx 的写法,其实我觉得没必要,未来属于 web components,其他都只是匆匆过客。
  • JQUERY ui 发布新版本,修复一堆bug,不过我不太感冒,继续玩我的polymer
  • github/fetch 提供了 window.fetch 功能 的 polyfill
fetch('/users.html')
  .then(function(response) {
    return response.text()
  }).then(function(body) {
    document.body.innerHTML = body
  })
  • 说实话网上很多js代码,都停留在原始状态,我一看到这样的代码,无论题目多美,我都不会往下看,因为是过时的,要懂得舍弃。
  • SPDY 要火
  • 突然有个观点 ** 不要改变标准,遵循标准、扩展标准,才能长久。 ** 很多所谓新技术都昙花一现,因为都自己搞标准,在javascript世界里, 千万不能破坏这个潜规中,否则最终都会失败,jquery最终会没落,原因不解释,polymer会灿烂,原因可以解释,是因为它遵循了web components标准。

资讯看完了,确实没啥大事件。还是计划一下今天 coding 的行程吧:

  • 继续完善tree component组件,由于上周我有了很多web component的开发经验。
  • domain框架继续完善,需要用es6重写,es6让我很兴奋!
  • 录制视频课程

先对 src/Actor.js 做了一些修改:

import Event from "./Event";
import uid = from "shortid";
import EventEmitter from "events/EventEmitter";

var dataKye = Symbol("dataKey"),
    isLoadEvents = Symbol("isLoadEvents")

class Actor extends EventEmitter{

    constructor() {
        this[dataKye] = {};
        this.set("id", uid());
        this.set("alive", true);
        this.uncommittedEvents = [];
    }

    set(k, v) {
        if (arguments.length === 1) {
            for (var n in k) {
                this.set(n, k[n]);
            }
        } else {
            this[dataKye][k] = v;
        }

    }

    get(k) {
        return this[dataKye][k];
    }

    get json() {
        return JSON.parse(JSON.stringify(this[dataKye]));
    }

    loadEvents(events) {
        if (this[isLoadEvents]) return;
        events.forEach(event => {
            this.when(event);
        })
        this[isLoadEvents] = true;
    }

    loadSnap(snap) {
        if (this[isLoadEvents]) return;
        this.set(snap);
        this[isLoadEvents] = true;

    }

    when(event) {
        if (event.name === "remove") {
            this.set("alive", false);
        }
    }

    apply(name, data, sagaId, sagaType) {
        if (this.get("alive")) {
            var event = new Event({
                sagaId: sagaId || null,
                sagaType: sagaType || null,
                aggregateId: this.get("id"),
                name: name,
                aggregateType: this.constructor.className,
                type: "aggregate",
                data: data
            });
            this.when(event);
            this.uncommittedEvents.push(event);
            this.emit("apply",this);
        }
    }

    remove() {
        this.apply("remove");
    }

}

module.exports = Actor;

然后把src/Event.js 做一下修改:

import {uid} from 'shorid';

var data = Symbol("data");
var name = Symbol("name");
var id = Symbol("id");
var time = Symbol("time");

export class Event{

    /**
     * @param data {targetId,targetType,sourceId,sourceType}
     */
    constructor(_name = "",data = {}){
        this[name] = _name;
        this[data] = data;
        this[id] = uid();
        this[time] = Date.now();
    }

    get id(){
        return this[id];
    }

    get time(){
        return this[time];
    }

    get name(){
        return this[name];
    }

    get data(){
        return JSON.parse(JSON.stringify(this[data]));
    }

    get json(){
        return {
            data:this.data,
            id:this.id,
            name:this.name,
            time:this.time
        }
    }

    static reborn(json){
        var event = new this();
        event[time] = json.time;
        event[data] = json.data;
        event[name] = json.name;
        event[id] = json.id;
    }

}
5 回复

已更新

@leogiese 能不能不要在自己的每个帖子下面都回复“已更新”,免得又有人跟我投诉。更新了就直接更新就好了嘛

@alsotang 管理员真不好当啊。。

angular 1.3 具体讲讲啊

有时间给你讲,呵呵

回到顶部