Angular2-项目实战-商城后台 bootstrap firebase

前言

本文的商城后台页面地址如下,先睹为快,再说实现。

https://yitala-store.firebaseapp.com

本文继续介绍angular2实战的相关内容。之前的实战严格说起来并非实战,因为都只是在在前端开发,没有数据库和服务端支持,没有数据库和服务端的项目就像行尸走肉一样,没有灵魂。本项目将加入firebase做数据库和服务端,结合商城后台的简单业务,实现CRUD,文件上传,下载,最终部署一个真正可以运行的网站。你没有听错,是最终可以部署到网络上访问的网站,如上文的链接(注意:上传页面操作特别慢,要翻墙才行)。学习本文,读者需要有自行搭建angular2的种子工程的能力,阅读和实践大概需要花你半天时间。

CRUD效果图
文件上传下载效果图

涉及知识点:

1,angular2一些非常基础的知识,component,router;

2,ng-bootstrap angular2版本的bootstrap。

3,firebase,angularfire2

git地址https://github.com/linweiwei123/yitalastore-admin-ng2.git

运行工程:

前提条件,必须安装了node,npm,webpack。

1) npm install 

2)  npm run start  到此就可以运行了,访问localhost:3000

从零开始

上面的工程是最终的结果,现在我们从头开始一点点的开发。

使用本工程,删除掉products文件夹,upload文件夹,share下的common文件夹,以及删掉他们相关的引用,使之成为一个干净的工程。

一,引入ng-bootstrap

ng-bootstrap是bootstrap4的angular2扩展,还处于beta阶段,但是这点不妨碍我们尝试使用。

安装npm install --save @ng-bootstrap/ng-bootstrap

在app.module.ts中导入

import{NgbModule}from'@ng-bootstrap/ng-bootstrap';

在app.module.ts的@NgModel({})的imports数组中加入

NgbModule.forRoot(),

如此ng-bootstrap就引入完成了,接下来我们来封装一个模态框,可以用来弹提示消息,用过bootstrap朋友不会陌生,就是model。

二,封装提示框组件 MessageComponent

这种公共的组件我们按照之前设计的框架最佳实践,放在share模块中,所以在share下创建一个messageComponent。代码如下,非常简单

message.component.ts
message.component.html

@Input msg:string是用来传递弹框消息的。

然后要在app.component.ts中申明,

最后就可以在你想用的地方使用了,使用方法如下

在你想用的地方都可以使用此方法来弹出提示框。

当然bootstrap还有很多东西,时间控件,轮播图,分页,tab,等等,无法一一讲述,读者可以举一反三,自行拓展。

三,创建firebase账号,引入到工程中。

firebase,是实时数据库,结合前端可以做一些android app,ios app还有我们的web app。在被google收购以后现在功能已经非常强大,在12月8日的google开发者大会中,引人注目。firebase简直是前端人员的福音,使用它你可以不需要自己弄后端的东西,就可以构建一个完整的app,实时数据库,文件存储,以及其他非常强大的功能。本文就实时数据库和文件存储来做个简单介绍。

注册一个google账号,如果你有了的话就不用注册,然后根据https://firebase.google.com的入门指导创建一个应用,添加一些数据(可以后面自己用代码新增数据,删除数据,更新数据)

实时数据库

从这里可以非常直观的看到数据库的情况,一个实时数据库存储了一些json,storage存储了一些图片文件。

接下来要把firebase引入到工程中,

npm install angularfire2 --save

引入firebase生成的app相应的初始化配置信息;

如此,firebase就应用到应用中了。

另外,还有个非常重要的一点,千万注意,需要将数据库规则改成read,write改为true,否则我们没做权限认证无法CRUD数据,Database和storage都需要改。

四,使用angularfire2实现数据的CRUD

创建products.component.ts,products.component.html 相关代码见源码,都有非常清楚的注释。

需要特别说明的是,database是时时数据,只要你改变了,他自行会推向各个端,你可以多开几个浏览器试一试,就像websokit一样,这一点常常可以用来做聊天工具。我看到firebase官网的demo中有一个是android/ios的聊天app(非常爽,现在开发一个简单的聊天工具只要1一个小时)。用firebase开发,简直无脑。具体实现细节就不一一阐述了,有兴趣的读者可以阅读源码,或者与我联系。

五,使用firebase sdk实现图片上传与下载

具体实现阅读源码。这里需要特别注意,为什么不直接使用angularfire2实现图片的CRUD,而要使用firebase的sdk呢,因为angularfire2还没有实现相关的typescript声明,就是*.d.ts文件,这点我咨询了angularfire2的主程他说未来考虑实现。查询了相关资料,可以使用angularfire2中国的呢firebaseApp来实现,不用再去下载一个firebase.js,更不用在index.html中引用firebase.js

由于国内的原因,firebase storage不通,所以这个功能对于部署在国内使用的功能,意义不大。上传图片和下载可以考虑用七牛云的js sdk来替换。

六,全球化部署

好霸气的名字,不过确实也是,firebase hosting可以实现全球部署,你发布的网站在全球都能访问(部分功能中国不能访问,如storage)。发布也十分简单,就是敲几个命令。

1)安装发布工具

npm install-g firebase-tools

2)初始化应用

如果是在我的工程基础上做的,就跳过这个步骤,我已经做了。

如果是读者新建的工程,执行 firebase init,提示要发布上去的文件夹时,不要默认选择public,改成dist(后面会解释)

3)添加文件

这一步firebase工具会去找含有firebaseConfig的html文件,如果有就跳过,把找到的内容发布上去。这里非常重要,读者一定要认真,我们最终的文件是编译后的dist包,firebaseConfig最终回打到dist下的index.html中,所以我们要把dist文件发布上去。

编译生成dist,执行npm run build:prod ,编译好后生成一个dist文件夹,

4)发布 

执行firebase deploy,耐心等待几分钟,

在浏览器中就可以输入网址  <your project name>/firebaseapp.com,本文的就是yitala-store.firebase.com,就能查看到部署到全球的网站了。

总结

本商城后台实现了一些简单的CRUD功能,使用了ng-bootstrap和firebase。大概我花了一天半的时间完成。感觉angular2插件真是非常丰富,非常好用。同时也感觉firebase之强大,但是也非常遗憾,firebase感觉在国内几乎不可能用到生产中,只能是用来自娱乐。这里推荐一个国外友人的工作日记的网站https://ng2-todo-app.firebaseapp.com/ ,这种轻量加简单的还是可以用一用。最后寄语与全中国前端开发人员共勉,希望祖国早日融入互联网怀抱。

作者按:最近换了工作,非常忙,学习的时间非常有限,希望自己过阵子能够多写一些更有深度的文章。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容