这几天用ng5做了一个俄罗斯方块
为什么要做这个东西呢?
嗯 为了证明自己会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做了一个俄罗斯方块的更多相关文章
- 做了一个sublime text插件
做了一个sublime text插件,可以方便地查看C++/python的调用图.插件的演示视频在这里: http://list.youku.com/albumlist/show?id=2820226 ...
- 做为一个前端工程师,是往node方面转,还是往HTML5方面转
文章背景:问题本身来自于知乎,但是我感觉这个问题很典型,有必要把问题在整理一下,重新分享出来. 当看到这个问题之前,我也碰到过很多有同样疑惑的同学,他们都有一个共同的疑问该学php还是nodejs,包 ...
- bootstrap做了一个表格
花了一下午做了一个表格: 大致是这样: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf ...
- PHP MVC简单介绍,对PHP当前主流的MVC做了一个总结
东抄西抄,对PHP当前主流的MVC做了一个总结PPT. 希望对初学者有点帮助! PHP MVC初步.ppt
- 用MVVM做了一个保存网页的工具-上篇
前言: 你是否有过收藏了别人博客或文章,当想用的时候却找不到?你是否有过收藏了别人博客或文章,却因为没有网络而打不开网页?OK,下面是我做的一个工具,有兴趣的同学们可以download 玩下,哈哈^. ...
- php大力力 [042节] 今天做了一个删除功能
php大力力 [042节] 今天做了一个删除功能 if(isset($_GET['action'])){ if($_GET['action']=="del"){ $sql = &q ...
- 做了一个简易的git 代码自动部署脚本
做了一个简易的git 代码自动部署脚本 http://my.oschina.net/caomenglong/blog/472665 发表于2个月前(2015-06-30 21:08) 阅读(200 ...
- 用原生javascript做的一个打地鼠的小游戏
学习javascript也有一段时间了,一直以来分享的都是一些概念型的知识,今天有空做了一个打地鼠的小游戏,来跟大家分享一下,大家也可以下载来增加一些生活的乐趣,下面P出代码:首先是HTML部分代码: ...
- 利用SCI做的一个足球答题系统
SCI,异步串行通信接口,内置独立的波特率产生电路和SCI收发器,可以选择发送8或9个数据位(其中一位可以指定为奇或偶校验位). SCI是全双工异步串行通信接口,主要用于MCU与其他计算机或设备之间的 ...
- 高仿“点触验证码”做的一个静态Html例子
先上源码: <html> <head> <title>TouClick - Designed By MrChu</title> <meta htt ...
随机推荐
- File was changed on disk
刚开始从eclipse转到idea,发现idea从svn同步代码后,点开一个java类报错 说是某个方法不存在,以为是别人代码没有提全,就点到别人代码里面去看,顶行出现"File was c ...
- MySql 建表出现的问题 : [ERR] 1064 - You have an error in your SQL syntax; check the manual.......
使用 MySql 建表出现的问题 在使用 Navicat Premium 运行 sql 语句进行建表时,MySQL 报错如下: 1064 - You have an error in your SQL ...
- Python 元类(Meta Class):解密 Python 面向对象编程的幕后推手
在 Python 编程中,我们每天都在和类打交道,但是你是否也和我一样想过:类本身是什么?是谁创建了类?元类(Meta Class)就是用来创建类的"类".今天让我们一起深入理解这 ...
- JMeter 线程组全家桶教程
宝子们,今天咱就来唠唠 JMeter 里那些超重要的线程相关的玩意儿,学会了它们,你就能在性能测试的世界里 "横冲直撞" 啦! 一.线程组 -- 性能测试的主力军 想象一下,你开了 ...
- CDS标准视图:催款代码 I_DunningKey
视图名称:催款代码 I_DunningKey 视图类型:基础 视图代码: 点击查看代码 @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUse ...
- UWP ManipulationStarted 移动图片或控件不要滑出父容器的判断
假设自定义一个用户控件用以在父容器Grid里拖动/移动: <UserControl x:Class="App6.Pic" xmlns="http://schemas ...
- 史上最全JVM面试题和答案
JVM概要介绍 JVM是Java Virtual Machine(Java虚拟机)的缩写. 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的. Java虚拟机有自己完善的 ...
- 3 x 2 + 1 !安 全 能 力 权 威 认 可 !
近日,由XOps大会组委会主办的"2024第三届XOps产业创新发展论坛"在北京召开.大会主论坛公布了2024上半年XOps最新评估结果,天翼云顺利通过ITU DevOps国际标准 ...
- Jenkins插件:Git
Jenkins插件:Git Jenkins,作为一款备受欢迎的持续集成和持续交付工具,在软件开发领域发挥着举足轻重的作用.它不仅能够与Git无缝集成,还能实现代码的自动化拉取.构建与部署,极大地提升了 ...
- [业界方案] Yarn的业界解决方案和未来方向
[业界方案] Yarn的业界解决方案和未来方向 目录 [业界方案] Yarn的业界解决方案和未来方向 0x00 摘要 0x01 Yarn 1.1 参考文章 0x02 分析 2.1 综述 2.1.1 y ...