向全栈迈进——Angular+Tornado开发树洞博客(一)

在写了Django和Tornado两个纯后端系列的博客后,我决定在前端方面也提升一下自己的技术,不再用原生的html凑合写个页面来支持后端的开发了。正好最近公司正在推动angular框架技术,因此我将前端学习的重点放在了angular框架上。这个系列将为大家带来angular+tornado这一组合,我们将使用这个组合来实现一个树洞博客。

所谓树洞博客,就是一个大家可以匿名倾诉秘密的地方,大家可以把内心想说出的东西匿名发布在网络上,从而疏解内心的压力。

我们的树洞博客雏形如下:

在首页中可以看到用户发布的秘密,并可以选择收藏、评论或点赞。秘密也会被分门别类归在不同的标签中,以便于大家选择感兴趣的内容查看。

 在编写部分,提供富文本编辑器让用户可以书写自己的故事并发布。

以上内容只是目前的博客雏形。本系列依然会以边开发边写博客的方式进行,因此后续功能待开发完成后会陆续发表博客讲述。

现在让我们正式开始吧!

一 框架及工具介绍

1 Node.js

Node.js是2009年发布的一款javascript运行环境,其特点是开源、跨平台且允许在浏览器外运行Chrome的V8 Javascript引擎。它的设计理念为非阻塞,单进程及单线程,这使得它很适合处理大量的并发连接而无需引入管理线程的负担。作为一个运行环境,Node.js支持丰富的库,且有合适的npm工具来管理这些库。此外,Node.js支持ECMAScript标准,并且提供了TypeScript的运行环境。

TypeScript是Javascript的超类,编译后,就可以生成javascript。TypeScript可以运行在任何浏览器中或Node.js中。三大前端框架都支持TypeScript:React, Angular和Vue.js。

2 Angular

我们在这里选用了Angular作为我们的前端框架,版本号为11。如上文所说,Angular是使用TypeScript编译的前端框架。它的特点是可模块化、基于组件和依赖注入。可模块化是指,Angular应用可以由不同的模块组合而成,便于大规模开发;基于组件是指,所有的页面逻辑都是基于组件来完成的,组件来存储自身的数据,维护自身的逻辑,并定义html显示在外部视图中;依赖注入是指不同的组件通信依赖于service,而不是将各个组件耦合在一起,组件自身也不必操心从服务器获取数据之类的事情。

Angular这个框架提供了一个脚手架工具@angular/cli,我们在实际开发中会经常使用这个工具,通过使用这个工具我们可以轻松地创建项目、构造组件、服务、模块等等东西。

Angular作为成熟的前端框架,社区提供了大量的第三方库供开发者使用,我们在这个系列的博客中也将会使用到三个第三方库:NG-ZORRO, ngx-cookie-service和ngx-quill。

NG-ZORRO是蚂蚁金服提供的一套Angular组件库,其包含的组件种类多,且方便好用,比Angular官方的Angular-Material和基于BootStrap的ngx-BootStrap都要好用且好看。因此,这个系列博客使用NG-ZORRO组件库来构造我们的页面。

ngx-cookie-service顾名思义是一套在Angular中操作cookie的库,其支持基本的设置和删除cookie,足够大家开发使用了。

ngx-quill是一个富文本编辑器插件,支持大量的自定义工具栏功能,在这篇博客中使用这个组件来作为编写故事的文本编辑器。

3 Tornado

前端框架部分介绍完毕,让我们来看一下后端部分的选择。我们在这个系列博客中依然选用Tornado。Tornado是一套python的异步web框架兼服务器,其最大特点也是异步+非阻塞。与Django这种大而全的框架相比,Tornado显得轻巧了很多,它不提供像Django那种表单系统,以及ORM系统,算是比较纯粹的web框架。

因此,我们需要找一个ORM框架来配合Tornado。这里我们依然选用SQLAlchemy+alembic的组合。SQLAlchemy是Python写的一款ORM框架,支持多种主流数据库。而Alembic为SQLAlchemy作者编写的另一个工具,用于对数据库进行数据迁移工作,如增加或删除字段等操作。

因此,我们的后端框架确定为Tornado+SQLAlchemy+Alembic的组合

4 数据库

我们依然选择简单好用的sqlite3作为我们的开发数据库。SQLite3作为文件型数据库,无需做任何配置就可直接使用,大幅节约了我们的时间。

5 Nginx

在这个系列博客中,我们依然使用Nginx来作为我们的反向代理服务器,但与之前不同的是,这个系列的Nginx不仅作为Tornado的反向代理,Angular也是需要部署在Nginx上的。所以,在这个系列中,Nginx就显得更加重要了。

6 其他可能用到的东西

随着博客的开发,我们还可能用到以下东西:

redis:内存型key-value型数据库,通常作为网站缓存使用。在这个系列博客中可能会作为缓存使用。

whoosh:python的搜索框架。在这个博客中可能会开发基于whoosh的搜索功能。

[可选项:ElasticSearch:非常流行的搜索框架,但和whoosh相比实在是太重了,因此可能不会选则它来开发搜索功能]。

以上就是我们要用到的所有工具。

二 整体架构图

此系列博客的整体架构图如上所示。

Angular+NG-ZORRO+Node.js构成整个系统的前端部分,通过Nginx访问后端;后端由Web服务器Tornado与ORM框架SQLAlchemy组成(至于Alembic,这个工具实在太朴素了,没有任何logo图片),并通过SQLAlchemy来访问SQLite数据库。诸如Redis和Whoosh之类的东西暂且作为后期锦上添花的东西,因此并没有体现在这张结构图上。

好了,在这篇博客中,为大家介绍了这个系列博客要用到的基础工具和整体架构图。我也是第一次接触前端框架部分的内容,若博客中写的有疏漏的地方,还希望大家多指教。

在下篇博客中,将从头介绍这些东西的安装和配置,以及新建Angular项目的部分,希望大家继续关注~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值