为什么要做这个东西呢?

嗯 为了证明自己会ng吧,最主要的是这几天的工作全是静态页,实在无聊枯燥的很。当然了,肯定还有其他妙不可言的原因,这里不想说出来。

我也忘记我是什么时候有想到用ng做俄罗斯方块的了,但能想到的原因有两个,其一: 目前前端界流行的三大框架中,唯一具备完善的模块系统的,只有ng,只有ng,只有ng!怎么说呢,关于这三个框架的区别,有个人讲得特别好:

React:服务员牵来一头牛,给了顾客主厨刀、削皮刀、剔骨刀、片刀、砍刀、美工刀……堆满在桌上,笑道,请享用!顾客一脸懵逼,但看到邻桌的老大爷用挥舞双截棍的姿势使用美工刀切出一块完美的牛排,于是也模仿起来。后来他住院了。 
Angular:服务员端上牛排和餐具,笑道,请享用!顾客吃得正开心,服务员又端来一块牛排,笑道,我们有新版本的牛排,请您务必重新开始吃,但食用前请将你您刚吃下的牛排吐干净。 
Vue:这间餐馆的装修和上面两家有很多地方都一模一样,但是到处都贴着大大小小的横幅:我们这家比上面两家都好! 
---大漠穷秋

嗯就是2017年撕逼的那个男人,上面他说的这些ng除了 1 -> 2 的时候变化特别大之外,ng就真的找不到其他缺点了。react:很好的UI,一旦跨组件通信,自身就根本不完善,只能借助redux。vue不做评价。

其二是因为,前几天研究vscode插件开发的时候阴差阳错的打开了vscode的开发者工具,我看到在编辑完成这一行的时候,当光标移开之后,这一行似乎就消失了,于是我联想到 能不能在开发俄罗斯方块的时候可以使运动中的形状实际显示的形状分开成为两个组件。

当我开始写这个项目的时候大体上整个流程我脑子里边已经过了一遍,后续的开发只是百无聊赖的各种判断和处理实际开发中遇到的bug。

截至目前(2018-3-30 17点)一共完成了三个形状的组建的开发,一共用了差不多两天的时间。如果用原生js完成的话估计代码量至少会翻一倍,时间成本估计也差不多,ng为我处理了一些极其细微又容易重复的操作,诸如,这个项目中对元素的显示隐藏操作看点很频繁,而这一点我却一点都不必费神,还有容器组建的渲染如果使用原生js开发,一定会很麻烦。或许这就是我要使用ng的另一个重要原因把。

我不知道应不应该把项目开发中遇到的坑记录下来,因为前端技术更迭的太快,以后有没有ng都说不准,不过还是多少记一下把,毕竟有些坑 还是真的坑啊。

  • 首先是指令,组件都需要在根模块里边声明,我相信绝大多数人会声明组件,而忘记声明指令,另外动态组建,需要在跟模块里声明为  entryComponents  

  • 再说说动态组建,动态组建使用的时候要有载体,载体可以使用viewchild配合指令获得,有了载体之后需要使用  componentFactoryResolver的resolveComponentFactory方法装载,最后使用载体的createComponent方法装载组建。说起来实在很繁琐不如直接看我github

  • 动态组建装载之后可以拿到他的实例对象然后就可以进行一系列操作了。

  • 另外就是keydown和keypress事件的坑了,这当然不算ng的坑,最后解决的方案是给document和绑定事件,并通过bind方法改变this。

基本的坑就是这些啦,以后能想到再说吧!

想说的有很多,无奈五年的老伙计是在卡的不行,只能先到这儿了,以后有机会再补充。

2018-03-29 20-42

我感觉想说的已经说完了

2018-03-30 17-43

这几天用ng5做了一个俄罗斯方块的更多相关文章

  1. 做了一个sublime text插件

    做了一个sublime text插件,可以方便地查看C++/python的调用图.插件的演示视频在这里: http://list.youku.com/albumlist/show?id=2820226 ...

  2. 做为一个前端工程师,是往node方面转,还是往HTML5方面转

    文章背景:问题本身来自于知乎,但是我感觉这个问题很典型,有必要把问题在整理一下,重新分享出来. 当看到这个问题之前,我也碰到过很多有同样疑惑的同学,他们都有一个共同的疑问该学php还是nodejs,包 ...

  3. bootstrap做了一个表格

    花了一下午做了一个表格: 大致是这样: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf ...

  4. PHP MVC简单介绍,对PHP当前主流的MVC做了一个总结

    东抄西抄,对PHP当前主流的MVC做了一个总结PPT. 希望对初学者有点帮助! PHP MVC初步.ppt

  5. 用MVVM做了一个保存网页的工具-上篇

    前言: 你是否有过收藏了别人博客或文章,当想用的时候却找不到?你是否有过收藏了别人博客或文章,却因为没有网络而打不开网页?OK,下面是我做的一个工具,有兴趣的同学们可以download 玩下,哈哈^. ...

  6. php大力力 [042节] 今天做了一个删除功能

    php大力力 [042节] 今天做了一个删除功能 if(isset($_GET['action'])){ if($_GET['action']=="del"){ $sql = &q ...

  7. 做了一个简易的git 代码自动部署脚本

    做了一个简易的git 代码自动部署脚本 http://my.oschina.net/caomenglong/blog/472665 发表于2个月前(2015-06-30 21:08)   阅读(200 ...

  8. 用原生javascript做的一个打地鼠的小游戏

    学习javascript也有一段时间了,一直以来分享的都是一些概念型的知识,今天有空做了一个打地鼠的小游戏,来跟大家分享一下,大家也可以下载来增加一些生活的乐趣,下面P出代码:首先是HTML部分代码: ...

  9. 利用SCI做的一个足球答题系统

    SCI,异步串行通信接口,内置独立的波特率产生电路和SCI收发器,可以选择发送8或9个数据位(其中一位可以指定为奇或偶校验位). SCI是全双工异步串行通信接口,主要用于MCU与其他计算机或设备之间的 ...

  10. 高仿“点触验证码”做的一个静态Html例子

    先上源码: <html> <head> <title>TouClick - Designed By MrChu</title> <meta htt ...

随机推荐

  1. Thrift中enum的一些探究

    http://anruence.com/2018/06/27/enum-thrift/ 问题 在用注解定义的Thrift enum 中,如果客户端端和服务端的enum定义不同,比如调换了enum中的枚 ...

  2. macOS:无法打开“XXXX”,因为Apple无法检查其是否包含恶意软件。的解决办法

    今天在安装node.js的时候出现了如下错误 从网上找到两种解决方案: 第一种(不建议)在终端输入以下命令即可 sudo spctl --master-disable1按回车键,随后提醒你输入电脑密码 ...

  3. 从零开始构建一个基于大模型和 RAG 的知识库问答系统

    SimpleAbdQA 本项目所使用的大模型为:qwen1.8b 演示中所使用Embedding为:Word2vec 一.介绍 通过从本项目中,你可以得到: 了解基于大模型的本地知识库的运作原理 了解 ...

  4. 即时通讯技术文集(第44期):微信、QQ技术精华合集(Part1) [共14篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第44 期. [-1-]  微信朋友圈千亿访问量背后的技术挑战和实践总结 [链接] http:/ ...

  5. Qml 中实现毛玻璃效果

    [写在前面] 毛玻璃效果(Acrylic Effect)是一种常见的 UI 设计风格,它通过模糊背景并添加透明度和噪声效果,使界面元素看起来像是半透明的磨砂玻璃. 本文将介绍如何使用 Qml 实现这种 ...

  6. 聊一聊 C#异步 任务延续的三种底层玩法

    一:背景 1. 讲故事 最近聊了不少和异步相关的话题,有点疲倦了,今天再写最后一篇作为近期这类话题的一个封笔吧,下篇继续写我熟悉的 生产故障 系列,突然亲切感油然而生,哈哈,免费给别人看程序故障,是一 ...

  7. Solution -「NOI 2017」「洛谷 P3825」游戏

    \(\mathscr{Description}\)   Link.   给大家看个乐子: link, 懒得概括题意啦. \(\mathscr{Solution}\)   对于没有 X 的情况, 显然可 ...

  8. Solution -「PKUWC 2018」「洛谷 P5298」Minimax

    \(\mathscr{Description}\)   Link.   给定一棵二叉树,每片叶子有一个权值,所有权值互不相同.每个非叶结点 \(u\) 有一个概率 \(p_u\in(0,1)\),表示 ...

  9. c# 反射私有类和私有方法

    namespace ClassLibrary1 { class InnerClass//私类 { public string Test(string s) { return "" ...

  10. biancheng-算法教程

    目录http://c.biancheng.net/algorithm/ 1算法是什么2时间复杂度和空间复杂度3递归算法4斐波那契数列5分治算法6找数组的最大值和最小值7汉诺塔问题8贪心算法9部分背包问 ...