vuex中为什么把把异步操作封装在action,把同步操作放在vue mutationss

用静态语言时追求动态功能,用动态语言时追求静态约束,程序员们永远是矛盾的集合体……
用静态语言时追求动态功能,用动态语言时追求静态约束,程序员们永远是矛盾的集合体……
&a data-hash=&afbdbbbe0fde9& href=&///people/afbdbbbe0fde9& class=&member_mention& data-editable=&true& data-title=&@赵锦江(勾三股四)& data-hovercard=&p$b$afbdbbbe0fde9&&@赵锦江(勾三股四)&/a& 的这篇博文:&a href=&///?target=http%3A//jiongks.name/blog/vue-code-review/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&jiongks.name/blog/vue-c&/span&&span class=&invisible&&ode-review/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
的这篇博文:
桌面适合做那些在小屏幕和碎片时间不方便做的事情,通常是交互更复杂的事情。例如说,用户很轻易能在手机上拍照和上传,但整理相册和编写日志就有点麻烦了。&br&&br&以前是桌面拥有产品的全部功能,手机只有移动功能。现在变成了手机拥有产品的全部功能,桌面只要专注于移动上不方便使用的功能。
桌面适合做那些在小屏幕和碎片时间不方便做的事情,通常是交互更复杂的事情。例如说,用户很轻易能在手机上拍照和上传,但整理相册和编写日志就有点麻烦了。 以前是桌面拥有产品的全部功能,手机只有移动功能。现在变成了手机拥有产品的全部功能,桌面只要…
每当我身边的人如此抱怨时,我都会告诉他:“我们之所以学一门技术,不是因为他简单,而是因为他强大。”
每当我身边的人如此抱怨时,我都会告诉他:“我们之所以学一门技术,不是因为他简单,而是因为他强大。”
连 Module 和 Model 都分不清楚我都不好意思吐槽...
连 Module 和 Model 都分不清楚我都不好意思吐槽...
&blockquote&Exception&p&You can use the simplest &singleton& (so simple that it is often not considered a singleton) to get initialization on first use, if any:&/p&&div class=&highlight&&&pre&&code class=&language-text&&X& myX()
static X my_x {3};
return my_x;
&/code&&/pre&&/div&&p&This is one of the most effective solutions to problems related to initialization order. In a multi-threaded environment the initialization of the static object does not introduce a race condition (unless you carelessly access a shared object from within its constructor).&/p&&/blockquote&&br&看来CppCoreGuidelines也是有坑的,因为如果&b&像题主一样只看一半&/b&,你会得到一个完全错误的结论。&br&&br&人家所说的要避免的单例模式是所谓的单例经典实现,大概就是指这种乱七八糟的东西:&br&&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&k&&template&/span& &span class=&o&&&&/span&&span class=&k&&typename&/span& &span class=&n&&T&/span&&span class=&o&&&&/span&
&span class=&k&&class&/span& &span class=&nc&&Singleton&/span& &span class=&p&&{&/span&
&span class=&k&&private&/span&&span class=&o&&:&/span&
&span class=&k&&static&/span& &span class=&n&&T&/span&&span class=&o&&*&/span& &span class=&n&&instance&/span&&span class=&p&&;&/span&
&span class=&k&&public&/span&&span class=&o&&:&/span&
&span class=&k&&static&/span& &span class=&n&&Singleton&/span&&span class=&o&&&&/span& &span class=&n&&get_instance&/span&&span class=&p&&()&/span& &span class=&p&&{&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&instance&/span& &span class=&o&&==&/span& &span class=&k&&nullptr&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&n&&instance&/span& &span class=&o&&=&/span& &span class=&k&&new&/span& &span class=&n&&T&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&return&/span& &span class=&o&&*&/span&&span class=&n&&instance&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&p&&};&/span&
&/code&&/pre&&/div&&br&很多单例模式的教学材料都会给你类似这样的一个“标准实现”,基本已经成了单例模式的代名词。这种实现不仅仅保证了单例类只能生成一个实例,还保证了在需要使用实例之前不会构造对象,是不是很厉害?&br&&br&接下来,你就得大开脑洞,考虑各种可能导致单例约束失效的可怕情况,加锁、二次检查,然后你的Singleton开始变得臃肿不堪,但你用得很满意——尽管常常会发生新的莫名奇妙的问题,但完成一个non-trivial的通用组件总是很有成就感的。&br&&br&CppCoreGuidelines现在告诉你,犯不着这么折磨自己了,C++11已经可以向你保证下面的代码可以完美满足单例模式的所有需求:&br&&br&&div class=&highlight&&&pre&&code class=&language-cpp&&&span class=&k&&template&/span& &span class=&o&&&&/span&&span class=&k&&typename&/span& &span class=&n&&T&/span&&span class=&o&&&&/span&
&span class=&n&&T&/span&&span class=&o&&&&/span& &span class=&n&&get_instance&/span&&span class=&p&&()&/span& &span class=&p&&{&/span&
&span class=&k&&static&/span& &span class=&n&&T&/span& &span class=&n&&instance&/span&&span class=&p&&;&/span&
&span class=&k&&return&/span& &span class=&n&&instance&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&br&这样的实现由于不够大路货,所以CppCoreGuidelines说“一般没人把它当单例模式看”。但事实上,它比所谓的经典单例实现更简单,更可靠,性能可能还更好。CppCoreGuidelines想表达的意思是,&b&不管你承不承认上面这段代码算不算单例,请把你那一坨东西改成这个&/b&。
ExceptionYou can use the simplest "singleton" (so simple that it is often not considered a singleton) to get initialization on first use, if any:X& myX()
static X my_x {3};
return my_x;
This is one of the most effective solutions to…
刚刚结束了 NG-CONF 2016,Angular 2 发布了 rc 版本,所以来更新下这个答案。。&br&&br&&b&1. ng2 的大小问题已解决&/b&&br&&br&最新版本的运行时大小比较(min + gzip)&br&&ul&&li&ng1: 55kb&/li&&li&ng2: 45kb&/li&&li&vue: 29kb&/li&&/ul&&br&Angular 2 现在可以通过 Offline Compile 节约大量的运行时大小(同时还有首次渲染时间)。&br&&br&虽然仍然稍微比 Vue 要大,但是最为一个大而全的一体化解决方案性价确实是很高了的。&br&&br&&br&&b&2. ng2 有更加广泛的多端支持&/b&&br&&br&最新的官方支持实现有:&br&&ul&&li&Web:&a href=&///?target=https%3A//angular.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&One framework.&i class=&icon-external&&&/i&&/a&,就是本身,没什么好说的。&/li&&li&SSR:&a href=&///?target=https%3A//universal.angular.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Angular Universal&i class=&icon-external&&&/i&&/a&,服务端渲染实现。&/li&&li&Mobile:&a href=&///?target=https%3A//mobile.angular.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Angular Mobile Toolkit&i class=&icon-external&&&/i&&/a&,其实就是套壳,也没什么好说的。&/li&&li&NativeScript:&a href=&///?target=https%3A//www.nativescript.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Cross-Platform Native Development with Javascript&i class=&icon-external&&&/i&&/a&,一个开源的跨平台的原生控件实现。&/li&&li&React Native:&a href=&///?target=http%3A//angular.github.io/react-native-renderer/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&react-native-renderer&i class=&icon-external&&&/i&&/a&,FaceBook 推出的一个跨平台原生控件实现。&/li&&li&Ionic2:&a href=&///?target=http%3A//ionic.io/2& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&ionic.io/2&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&,一个跨平台的移动端 Hybrid 解决方案。&/li&&li&Electron:&a href=&///?target=https%3A///angular/angular-electron& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub - angular/angular-electron: Angular2 + Electron&i class=&icon-external&&&/i&&/a&,一个跨平台的桌面端 Hybrid 解决方案。&/li&&/ul&目前来说的话,对 Vue 而言,SSR 是没有的(虽然 Vue 2 支持起来可能不难),React Native 是没有的(虽然说有 Weex,但是对于国内的 KPI 项目又出的这么慢可能要考虑下生态问题,而且 Vue 并没有实现核心逻辑与渲染逻辑分离,Weex 到底是 Vue 的多端实现支持还是一个和 Vue 相似 API 的另一个框架都有存疑),移动端 Hybrid 也没有 Ionic 这样现有的简单解决方案(当然自己基于 Cordova 搭建也是可以的)。&br&&br&&b&3. Angular 2 也有了自己的 CLI 工具&/b&&br&&br&这个只是刚刚扯平,&a href=&///?target=https%3A//cli.angular.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Angular CLI&i class=&icon-external&&&/i&&/a&,Vue 也有。&br&&img src=&/baf5f2559d6dea8d6223d_b.png& data-rawwidth=&339& data-rawheight=&202& class=&content_image& width=&339&&&br&&br&&b&4. Angular 2 更加测试友好&/b&&br&&br&Angular 2 提供了各种 Helper Function,在测试中可以更加简洁高效,便于细粒度控制。&br&&img src=&/3fef4afe1b0defe8ad95_b.png& data-rawwidth=&1023& data-rawheight=&597& class=&origin_image zh-lightbox-thumb& width=&1023& data-original=&/3fef4afe1b0defe8ad95_r.png&&&br&&br&&b&5. Angular 2 更加工具友好&/b&&br&&br&Angular 2 的主体是的 JavaScript(TypeScript),而 Vue 的主体是 HTML(Vue),前者可以较为方便地使用现有工具完成代码提示、代码检查等,而后者往往需要额外的编辑器或 IDE 插件支持。&br&&br&&br&&br&PS:个人项目和大公司主导项目本身并没有什么优劣之分,尤老师说的个人项目的自由度更高当然是对的,但是精力有限确实也是客观的事实,比如 Google 现在基本是要把 Angular 2 从 Framework 做成 Platform,从工作量级上这个程度个人确实是很难实现的。&br&&br&&br&&br&&br&--- 原回答---&br&&br&截至回答时的问题为:&blockquote&Angular2 相比 Vue 有什么优势?&br&&/blockquote&&br&所以问题要求就是只谈优势,并不是客观的对比。(只针对框架本身)&br&&br&&b&1. Angular2 由 Google 主导,而 Vue 由个人主导。&/b&&br&并不是说能力方面,但考虑到个人的经费和精力等多方面原因,团队项目要比个人项目在多方面因素上更为靠谱。&br&&br&&b&2. Angular2 旨在提供通用的【前】端方案,而 Vue 仅专注于 Web。&/b&&br&作为框架而言 Angular2 在实现上具有更高的抽象层次,不仅可以开发 Web 应用(面向 DOM),还可以开发客户端应用(面向 Native UI),比如搭配 NativeScript。&br&&br&&b&3. Angular2 有原生的 Isomorphic 解决方案,而 Vue 只能靠第三方库或服务。&/b&&br&服务器端渲染可以提供良好的 SEO 以及首页加载的性能优化,而 Angular2 有官方提供的服务器端渲染支持,可以解决 Vue 等纯前端框架无法解决的痛点。&br&&br&&b&4. Angular2 具有更广泛的开发语言支持,而 Vue 只有 JavaScript 支持。&/b&&br&Angular2 官方提供 TypeScript、JavaScript 以及 Dart 的开发支持(不同的分发版本,不同的文档),并且能够在行为和形式上基本保持一致性(几乎相同的 API)。而 Vue 本身只有 JavaScript 支持,其他语言只能单纯靠编译到 JavaScript 实现。&br&&br&&b&5. Angular2 的数据绑定在使用上更为简单。&/b&&br&Angular2 支持绑定到任何普通的 JavaScript 对象,并且不会对对象造成任何改变,通过 zone.js 实现任意位置的异步操作后的数据自动同步。而 Vue 对于一些复杂对象的复杂操作,需要手动调用 setter 来通知 Vue 进行更新,操作上更为复杂。&br&&br&&b&6. Angular2 的综合性能确实比 Vue 更好。&/b&&br&参见各种跑分。&br&&br&&b&7?. 使用 Angular 2 更有助于淘汰落后浏览器,促进社会进步。&/b&&br&RT。&br&&br&&b&8?. Angular2 的最新版本号约是 Vue 的两倍,更具气势。&/b&&br&RT。&br&&br&&b&9?. Angular2 仍然在 Beta 阶段,相对于 Vue 而言具有更多找 BUG 发 PR 的机会。&/b&&br&RT。&br&&br&。。。
刚刚结束了 NG-CONF 2016,Angular 2 发布了 rc 版本,所以来更新下这个答案。。 1. ng2 的大小问题已解决 最新版本的运行时大小比较(min + gzip) ng1: 55kbng2: 45kbvue: 29kb Angular 2 现在可以通过 Offline Compile 节约大量的运行时大小(同时还有首…
可以改用 &a href=&///?target=https%3A///RubyLouvre/avalon& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&avalon&i class=&icon-external&&&/i&&/a&.js 。&br&支持IE6及移动端;&br& 性能上有优势,angular只能撑到2000个指令,avalon达到14000个以上;&br&有核心带薪的团队在开发维护
&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&有一整套UI库(近50个组件,包括一个验证框架,两个GRID,一个树) &a href=&///?target=https%3A///RubyLouvre/avalon.oniui& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&/RubyLouvre/a&/span&&span class=&invisible&&valon.oniui&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&有完善的单元测试 &a href=&///?target=https%3A///RubyLouvre/avalon.test& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&RubyLouvre/avalon.test · GitHub&i class=&icon-external&&&/i&&/a&&br&有各种教材&br&&ul&&li&&a class=& wrap external& href=&///?target=http%3A//www./article/column/234& target=&_blank& rel=&nofollow noreferrer&&avalon学习教程&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a class=& wrap external& href=&///?target=http%3A//limodou.github.io/avalon-learning/zh_CN/index.html& target=&_blank& rel=&nofollow noreferrer&&Avalon Learning&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a class=& wrap external& href=&///?target=http%3A///rubylouvre/p/3181291.html& target=&_blank& rel=&nofollow noreferrer&&迷你MVVM框架 avalonjs 入门教程&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a class=& wrap external& href=&///?target=http%3A///s/aMO9PyIQCnLOF/& target=&_blank& rel=&nofollow noreferrer&&前端MVVM的应用-UnitedStack.ppt&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a class=& wrap external& href=&///?target=http%3A///rubylouvre/p/3385373.html& target=&_blank& rel=&nofollow noreferrer&&avalon最佳实践&i class=&icon-external&&&/i&&/a&&br&&/li&&li&&a href=&///?target=http%3A///search.html%3Fpagetype%3D3%26stj2%3Dsearch.search%26stag%3Dtxt.index%26ms_key%3DAvalon%25E6%258E%25A2%25E7%25B4%25A2%25E4%25B9%258B%25E6%& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&搜索 - 腾讯视频&i class=&icon-external&&&/i&&/a&(《avalon探索之旅》系列视频教程)&br&&/li&&/ul&更重要的是,已经有许多公司在用,框架注重向前兼容;有一个小社区,有什么不懂的地方可以发问, QQ:(注明来学avalon)&br&&img src=&/36f5a52f6c4e57adc5950_b.jpg& data-rawwidth=&969& data-rawheight=&636& class=&origin_image zh-lightbox-thumb& width=&969& data-original=&/36f5a52f6c4e57adc5950_r.jpg&&
可以改用 .js 。 支持IE6及移动端; 性能上有优势,angular只能撑到2000个指令,avalon达到14000个以上; 有核心带薪的团队在开发维护
有一整套UI库(近50个组件,包括一个验证框架,两个GRID,一个树)
&p&&a href=&///?target=http%3A///%3Fq%3Djava%2Bfactory& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Factory&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&///?target=http%3A///%3Fq%3Djava%2Bbuilder& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Builder&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///%3Fq%3Djava%2Bgenerator& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Generator&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///%3Fq%3Djava%2Bcreator& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Creator&i class=&icon-external&&&/i&&/a&&br&&a href=&///?target=http%3A///%3Fq%3Djava%2Bgetter& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Getter&i class=&icon-external&&&/i&&/a&&/p&&br&&p&不客气。&/p&
好书分多种。不能说,一定要讲了大道理,一定要严谨客观才是好书。&br&&br&举个极端点的例子。&br&如果我说,《红楼梦》太差了,看都看不懂,一定会有无数的人过来吐槽我。这个不奇怪,因为《红楼梦》作为中文第一名著,我说这样的话是很招人唾弃的。但如果让一个仅仅上小学三四年级的儿童,去看原版《红楼梦》,看不懂也要强逼着看,理由是字大部分都认识了,而这是中国第一好小说,应该要看,必须要看。那不但是糟蹋了这本书,也是毁了一个少年对文学的热爱。&br&&br&也就是说,再好的书,也要分适合什么读者阅读。有些书适合初学者,有些书适合进阶者,有些书适合消遣,有些书适合钻研。《Head First Design Pattern》恰好适合还没有入门面向对象的读者了解面向对象和设计模式,那它针对这样的读者就是好书,至于水平已经早已入门的读者,再去看它,又不喜欢那种诙谐、调侃、非技术的语言文字,当然就会有失落,这很正常。&br&&br&另外,再好的书,它也是有目标的(我指技术类),即阅读后可以达到什么水平,或者这本书是用来干吗。有些是为了让你入门,有些是为了让你进阶,有些是作为工具,有些是大全。《新华字典》天天捧着阅读显然不是好方法,拿《计算机程序设计艺术》当小说看也是非常不合适的。《Head First Design Pattern》书的目的是为了让你入门,你非要指望它可以让你精通设计模式,那就错误理解了这本书的目标了。&br&&br&所以,我一直认为,&b&好书只是相对的,适合才是好书,否则暂时不读为妙&/b&。
好书分多种。不能说,一定要讲了大道理,一定要严谨客观才是好书。 举个极端点的例子。 如果我说,《红楼梦》太差了,看都看不懂,一定会有无数的人过来吐槽我。这个不奇怪,因为《红楼梦》作为中文第一名著,我说这样的话是很招人唾弃的。但如果让一个仅仅…
&a data-hash=&e59aa6c5ee28d1fa404c40aae3455c0b& href=&///people/e59aa6c5ee28d1fa404c40aae3455c0b& class=&member_mention& data-editable=&true& data-title=&@梁伟国& data-tip=&p$b$e59aa6c5ee28d1fa404c40aae3455c0b& data-hovercard=&p$b$e59aa6c5ee28d1fa404c40aae3455c0b&&@梁伟国&/a& 老师提到的uFrame刚刚看了一下,很强大的感觉...&br&&br&在Unity游戏的开发当中,我并没有刻意地采用MVC框架,因为不像网站开发那样,Model,View,Controller在游戏这个领域里还没有很清晰的定义。&br&究其原因,可能是由于不同游戏类型本身的软件架构可以相差很远,而且游戏里面的Object之间有大量的交互,所以垂直的MVC似乎不是十分应景。&br&&br&然而,某种程度的分离代码逻辑是必要的,可以提高代码的可维护性和重用性。&br&下面我说说自己的一些经验。&br&&br&假设我们在做一个马里奥:&br&对于游戏里的角色,我会采用这样一个结构。&br&&b&Character Manager&/b&,它的作用是包含这个角色的Controller(s),并提供一个黑板(Blackboard)[1]。&br&&b&Controller&/b&,利用Reusable Models来处理角色在这个游戏中的某一状态的逻辑。&br&&b&Reusable Model&/b&,是一个虚的概念,并不是一个父类,通常这类Model都负责某一个特定的功能,可以重复利用,可看做游戏引擎的延伸。&br&我会将Character Manager和Reusable Model继承MonoBehavior,这样我们就能够直观地知道这个角色是什么类型的Character,并且可以利用inspector调节Model的参数。&br&&img src=&/c8a9eda7d8cd_b.jpg& data-rawwidth=&462& data-rawheight=&264& class=&origin_image zh-lightbox-thumb& width=&462& data-original=&/c8a9eda7d8cd_r.jpg&&&br&&br&&br&怎么将上面的架构应用在马里奥身上呢:&br&作为Character Manager,我们可以采用Finite State Machine或者Behavior Tree。一个好处是它们都天然地提供了“Controller”。&br&例如Finite State Machine,它的每一个State都可以看作一个Controller。&br&而Behavior Tree里面的Action Node,也可以看作是一个Controller。&br&&br&在每一个Controller里面,都会有指针指向一些Reusable Model。&br&例如下图Move State可以有一个Move Motor,专门来实现GameObject的移动,而Sprite则封装GameObject的表现,如动画、旋转、位置等等。&br&这些Reusable Model通常都提供丰富的参数可供调整,可以用于不同游戏当中。&br&&br&用户输入和游戏里面的消息,则会暂存在Character Manager里面的Blackboard里,供Character Manager使用,让它决定是否需要更换Controller。&br&例如马里奥里面我按左键,往左行动的信息会写在FSM的Blackboard里面,然后通过FSM的State转换机制 [2],从Idle State转换到Move State。&br&这样的好处是,往左的信息可以从Input Manager (图中没给出)那里得来,也可以从Enemy AI Manager(图中没给出)那里得来。&br&这样,一个类型(如拥有Idle,Move,Jump等状态)的FSM,就可以用在所有类似的角色身上,无论是玩家控制的还是AI控制的。&br&&br&&img src=&/c0eb81b602_b.jpg& data-rawwidth=&322& data-rawheight=&421& class=&content_image& width=&322&&&br&最终在Unity里面会是这样一个情况,FSM,Sprite,MoveMotor都作为Component,而Controllers则包含在FSM里面。&br&&img src=&/b447a65e1e2ebdf94a3e5b_b.jpg& data-rawwidth=&418& data-rawheight=&230& class=&content_image& width=&418&&&br&&br&以上方案虽然并不严格,但是在一定程度上提高了代码的可复用性和可维护性。&br&例如现在我基本都把MoveMotor,Sprite等Model写好,新项目就直接扔进来就能用;&br&MoveState,IdleState,JumpState等一些在平台游戏里常用的状态封装好,留出一些可调参数,例如状态间的转换。&br&&br&希望有帮助 :)&br&&br&&br&[1] Blackboard的本质是一个Dictionary。&br&[2] 比较原始的FSM会将State转换直接放在State里面,但这样大大降低了State的可复用性。因此可以尝试将State的转换作为一个可调参数。一些可视化的FSM的原理也是这样,利用连线将两个State链接起来,然后通过定义一些转换的条件。&br&&br&&br&----------Update 1-----------&br&1. 重新表述Controller的作用
老师提到的uFrame刚刚看了一下,很强大的感觉... 在Unity游戏的开发当中,我并没有刻意地采用MVC框架,因为不像网站开发那样,Model,View,Controller在游戏这个领域里还没有很清晰的定义。 究其原因,可能是由于不同游戏类型本身的软件架构可以相…
&a href=&///?target=https%3A//www.cs.cmu.edu/%7Erwh/theses/okasaki.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&cs.cmu.edu/~rwh/theses/&/span&&span class=&invisible&&okasaki.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&你应该看得是这个。在进行纯粹的函数式编程的时候,你以前学的设计模式和ACM类算法都没有任何鸟用。就连复杂度怎么算,都要重新学习一遍。&br&&br&当然了,很少有人能使用这种技术来找到一个普通的码农的工作(逃&br&&br&====&br&&br&P.S. 有些人觉得可变数据结构的算法也能直接FP维持相同的时间/空间复杂度,还是需要再学习一个。
你应该看得是这个。在进行纯粹的函数式编程的时候,你以前学的设计模式和ACM类算法都没有任何鸟用。就连复杂度怎么算,都要重新学习一遍。 当然了,很少有人能使用这种技术来找到一个普通的码农的工作(逃 ==== P.S. 有些人觉得可变数…
谢邀。&br&&br&首先要有一个论点:是的,根据 &a href=&///?target=http%3A//gold.xitu.io/%23/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&掘金&i class=&icon-external&&&/i&&/a& 上的内容,技术框架很多的功能点都在趋于统一&br&&ol&&li&Reactiveness&/li&&li&Module / Component Programming&/li&&li&Isomorphic JavaScript =& Backend render / Flux(Vuex)&/li&&li&ES6/7 - Friendly&/li&&li&Virtual DOM&/li&&/ol&但是,我觉得不是前端框架趋于统一,而是前端开发需要解决的问题越来越明确且统一。
谢邀。 首先要有一个论点:是的,根据
上的内容,技术框架很多的功能点都在趋于统一 ReactivenessModule / Component ProgrammingIsomorphic JavaScript =& Backend render / Flux(Vuex)ES6/7 - FriendlyVirtual DOM但是,我觉得不是前端框架趋于统…
框架是用来解决特定领域问题的,不谈领域就讨论用不用框架,有些流氓……&br&&br&我把angular这种东西比喻成收割机,如果你是日本那种小块地,精耕细作,用这个纯属自找麻烦,但是到了一望无际的美国中西部,再不用它,就是跟自己过不去。&br&&br&搞代码的时候可以有情怀,但现实世界一般不正好迎合我们的情怀,兵无常势,水无常形,为将者见机行事,不同场景下选用不同方案。如果做各种管理平台项目,用angular真的挺省事的,不要在意细节,直接硬推过去,别的场景我也不推荐你用它。
框架是用来解决特定领域问题的,不谈领域就讨论用不用框架,有些流氓…… 我把angular这种东西比喻成收割机,如果你是日本那种小块地,精耕细作,用这个纯属自找麻烦,但是到了一望无际的美国中西部,再不用它,就是跟自己过不去。 搞代码的时候可以有情怀…
&a data-hash=&4e31f4f2b35b036a888f& href=&///people/4e31f4f2b35b036a888f& class=&member_mention& data-tip=&p$b$4e31f4f2b35b036a888f& data-hovercard=&p$b$4e31f4f2b35b036a888f&&@空空&/a& 我算是用过React没用过Angular,所以正好补充下。&br&&br&首先我现在的经验是Angular和Ember都只玩过TODOMVC的tutorial,React的话自己正在写一个Chrome的App和公司的一个小项目。&br&最近正好有个新项目在评估用&b&Angular&/b&,&b&Ember&/b&还是&b&React(+Flux)&/b&,我随便谈一点自己的浅见。&br&&br&&b&Angular.js&/b&&br&首先Angular的背后是Google(难道这就是官网被墙的原因?),所以社区基础是不用担心的,整个生态也已经是非常的完整了,从最基本的Tutorial到StackOverflow的问题数到框架本身的剖析都有非常非常多,所以从这个角度看起来Angular应该算是上手比较容易的。&br&&br&不过Angular目前的问题看起来也很明显&br&1. 性能 &br&
同样是TODOMVC的Sample,Angular完全载入用了1.1s(&a href=&///?target=http%3A//www.webpagetest.org/video/compare.php%3Ftests%3D141120_RG_14H8%2C_14H9%2C141120_VR_14HA%2C_14HB%2CB_14HC%2CE_14HD%2C141120_RX_14HE%2C141120_NF_14HF%2C141120_WZ_14HG& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&WebPagetest - Visual Comparison&i class=&icon-external&&&/i&&/a&)。目前我用到的基于Angular的就是&b&Kibana&/b&,不得不说,确实挺慢的。。&br&2. Angular 2.0&br&
Angular的2.0几乎是一个推翻重做的框架,估计不会有1.X的upgrade方案。所以如果现在新开始的项目采用Angular的话,会是一个很尴尬的时机。同样,如此大的改动似乎也反面印证了1.X并不是那么好。这篇文章推荐去看看&a href=&///?target=https%3A///%40mnemon1ck/why-you-should-not-use-angularjs-1df5ddf6fc99& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Why you should not use AngularJs&i class=&icon-external&&&/i&&/a&&br&&br&&br&&b&React.js&/b&&br&React很大的特点就是“轻”,再加上&a href=&///?target=http%3A//facebook.github.io/react/docs/glossary.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&VDOM&i class=&icon-external&&&/i&&/a&这个很好的idea让React非常非常快(在上面那个测试里面0.3s左右就载入完毕)。另外React和Angular一个很大的不同就是React采用的是one-way data flow。&br&&br&React的缺点嘛,大概就是现在还太新了很难说将来有没有大的API变化,目前在大的稳定的项目上采用React的,我也就只知道有Yahoo的Email。所以现在很少有批评React的声音也许不是他真的就没有坑,而是那些坑还没有被踩出来而已。&br&&br&还有就是React本身只是一个V而已,所以如果是大型项目想要一套完整的框架的话,也许还需要引入Flux和routing相关的东西。React的&a href=&///?target=https%3A///rackt/react-router& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&routing&i class=&icon-external&&&/i&&/a&我没有研究过,但是Flux的话已经有出现一些&a href=&///?target=http%3A//spoike.ghost.io/deconstructing-reactjss-flux/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&批评的声音&i class=&icon-external&&&/i&&/a&了。&br&&br&&br&&br&&b&总结&/b&&br&Angular是真正的大而全的framework,他有自己一套思路,基本你follow这个思路往里面填代码就OK。&br&React是一个简短有力的library,他只负责解决你某个单一的“痛点”。
我算是用过React没用过Angular,所以正好补充下。 首先我现在的经验是Angular和Ember都只玩过TODOMVC的tutorial,React的话自己正在写一个Chrome的App和公司的一个小项目。 最近正好有个新项目在评估用Angular,Ember还是React(+Flux),我随便谈一点…
强烈推荐IDEA,前后端均是大杀器。&br&&br&作为Jetbrain所有ide的爸爸,当然也是webstorm的爸爸,加之超丰富的插件支持,MEAN全栈,Java全家桶,php,python写起来都非常爽。前端支持的框架也是非常之多。&br&&br&集成各种服务器,各种数据库,各种自动化工具,习惯了以后再也不会想用其它ide
强烈推荐IDEA,前后端均是大杀器。 作为Jetbrain所有ide的爸爸,当然也是webstorm的爸爸,加之超丰富的插件支持,MEAN全栈,Java全家桶,php,python写起来都非常爽。前端支持的框架也是非常之多。 集成各种服务器,各种数据库,各种自动化工具,习惯了以后…
谢邀。&br&&br&MVC是软件架构,Observer是设计模式,是不同层面的东西,不能直接比较异同。&br&&br&MVC本质上是解耦,让UI和逻辑,数据分离。一旦应用,基本上整个项目都要遵从这种模式。&br&&br&Observer是一种传递消息的机制,特点是被观察者不需要知道观察者是谁,降低了耦合。这是一种模式,三两个class就可以实现,对网站构架没有影响。&br&&br&如果硬要说联系,Observer模式经常被应用在MVC架构中,作为一种消息处理的机制。
谢邀。 MVC是软件架构,Observer是设计模式,是不同层面的东西,不能直接比较异同。 MVC本质上是解耦,让UI和逻辑,数据分离。一旦应用,基本上整个项目都要遵从这种模式。 Observer是一种传递消息的机制,特点是被观察者不需要知道观察者是谁,降低了耦合…
改动很大,基本把原来存在的问题都解决了,也对标准作了很多考虑。&br&&br&知乎的编辑器不支持markdown吗。。。好不习惯,我刚写了一篇博客来表达自己对Angular2.0的感慨,地址在这里:&br&&br&&a href=&///?target=https%3A///xufei/blog/issues/9& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&浴火重生的Angular · Issue #9 · xufei/blog · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&刚才天猪回答的那篇链接,内容非常值得看,我之前花了一些时间翻译了一遍,也贴出来给大家看看吧:&br&&br&&a href=&///?target=https%3A///xufei/blog/issues/8& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&有关Angular 2.0的一切 · Issue #8 · xufei/blog · GitHub&i class=&icon-external&&&/i&&/a&
改动很大,基本把原来存在的问题都解决了,也对标准作了很多考虑。 知乎的编辑器不支持markdown吗。。。好不习惯,我刚写了一篇博客来表达自己对Angular2.0的感慨,地址在这里:
刚才天猪回答的那篇…
Vuex 之于 Vue 就像 Redux 之于 React:State Management Architecture &---& View Layer&br&&br&正好这两天刚把英文文档写完了:&a href=&///?target=http%3A//vuex.vuejs.org/en/intro.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&vuex.vuejs.org/en/intro&/span&&span class=&invisible&&.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
Vuex 之于 Vue 就像 Redux 之于 React:State Management Architecture &---& View Layer 正好这两天刚把英文文档写完了:
!--------------- created at
---------------&br&二话不说先来一个 Github 上 PHP 开源项目的排名 &a href=&///?target=https%3A///search%3Fl%3DPHP%26q%3D%2Bstars%253A%253E0%26ref%3Dsearchresults%26type%3DRepositories& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Search ·
stars:&0 · GitHub&i class=&icon-external&&&/i&&/a& , 好有个概念. &br&&img src=&/cfbc05621aaf_b.jpg& data-rawwidth=&767& data-rawheight=&351& class=&origin_image zh-lightbox-thumb& width=&767& data-original=&/cfbc05621aaf_r.jpg&&&br&大家的回答都比较老了, 现在是 2014 年 8 月下旬, PHP 最近这几年还是发生了很多变化, 尤其是 Laravel 的出现, 让很多已经开始放弃 PHP 的人又从新回到 PHP 的怀抱. &br&&br&离开 PHP 是因为觉得社区就是一盘散沙, 大家各种为战, 当我想学个框架, 来提高生产效率的时候, 上 Google 一搜, 出来的就是 &br&&ul&&li&50个你必须了解的 PHP 框架&&/li&&li&&10个最有名的 PHP 框架&....
&/li&&/ul&真的很吓人, 这么多的框架, 我无从入手. &br&&br&最后我下定决心, 把每一个框架都学习一遍, 真正在学习的时候, 头又大了, 每一个框架都有不同的代码规范, 不同的架构, 不同 &功能一样调用方式不一样的函数方法& , 可以这么说&br&&blockquote& 每一个框架都在&b&发明属于自己的语言&/b&&/blockquote&&b&在学到第五个框架的时候, 我&/b&就决定放弃了, 因为, 我觉得, 我虽然年轻, 但是不至于时间如此廉价的浪费掉. &br&&br&后来一直听说 Ruby 社区有一个叫 Ruby on Rails 的 Web 框架, 是全世界最好的框架, 为了用上最好的框架我开始学习 Ruby 直到接触 Rails, 还记得第一次用 Rails 写 Demo App 的时候, 热泪盈眶呀, 多么好的设计, 并且最重要的, Rails 的社区是如此理智, 大家喊得口号是&br&&ul&&li&Conventio &/li&&li&DRY - Don't Repeat Y&/li&&li&KISS - Keep &/li&&li&Don't r&/li&&li&Optimized for programmer &b&&u&happiness&/u&&/b& and sustainable &u&&b&productivity&/b&&/u&&br&&/li&&/ul&多么智慧, 多么聪明, 又是多么简单的一些想法, 我疯狂的爱上了 Rails. &br&&br&2012 年末, 无意间在 Tuts+ 网站上看到 &a class=& wrap external& href=&///?target=https%3A///authors/jeffrey-way& target=&_blank& rel=&nofollow noreferrer&&Jeffrey Way&i class=&icon-external&&&/i&&/a& 的一套
&a href=&///?target=https%3A///courses/laravel-3-essentials& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Laravel 3 Essentials&i class=&icon-external&&&/i&&/a& ( 注意: Laravel 现在已经是 Laravel 4 了, 这套课程已经 out dated 了 ) 课程, 看完以后对 Laravel 印象深刻, 从那会就一直留意 Laravel 的发展. &br&&br&2013 年 6 月份, Laravel 4 发布, 集成了 Composer, 框架的可扩展性极高, 还有 100% full testing coverage. &br&&br&关于 Laravel 4 的好, 我在这个问题里面已经讲了 &a href=&/question//answer/& class=&internal&&最好的 PHP 框架是什么?为什么?&/a& , 就不复制过来了. &br&&br&&b&Laravel China: &/b&&br&Laravel China is ready &a href=&///?target=http%3A//laravel-china.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Laravel 中文文档&i class=&icon-external&&&/i&&/a& , 欢迎发起 issue 提交纰漏 和建议 --& &a href=&///?target=https%3A///laravel-china& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Laravel China · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&&b&PHPHub: &/b&&br&最后对 PHP & Laravel 的爱好者喊一句, 我抽空弄了个社区, 欢迎加入一起讨论技术, 一起成长. &br&&br&&blockquote&&a href=&///?target=http%3A//phphub.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&PHPhub - PHP & Laravel的中文社区&i class=&icon-external&&&/i&&/a& 一个干净, 纯粹的, 积极向上的 PHP 中文社区&br&网站是使用 Laravel4 编写的, 代码基于 MIT Licence 开源 &a href=&///?target=https%3A///summerblue/phphub& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&summerblue/phphub · GitHub&i class=&icon-external&&&/i&&/a& , 欢迎大家贡献代码.&/blockquote&
!--------------- created at
--------------- 二话不说先来一个 Github 上 PHP 开源项目的排名
, 好有个概念. 大家的回答都比较老了, 现在是 2014 年 8 月下旬, PHP 最近这几年还是发生了很多变化, 尤其是 Larave…
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 vue mutations 的文章

 

随机推荐