惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

SecWiki News
SecWiki News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
博客园 - 叶小钗
S
SegmentFault 最新的问题
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
博客园_首页
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
腾讯CDC
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
L
Lohrmann on Cybersecurity
量子位
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tor Project blog
J
Java Code Geeks
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
博客园 - 三生石上(FineUI控件)
Attack and Defense Labs
Attack and Defense Labs
AI
AI
The Cloudflare Blog
T
Tailwind CSS Blog
S
Schneier on Security
爱范儿
爱范儿
PCI Perspectives
PCI Perspectives
Stack Overflow Blog
Stack Overflow Blog
S
Secure Thoughts
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
The Exploit Database - CXSecurity.com
博客园 - 【当耐特】
V2EX - 技术
V2EX - 技术
S
Securelist
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
Help Net Security
Help Net Security
C
Cisco Blogs
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
B
Blog RSS Feed
K
Kaspersky official blog
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
S
Security Affairs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Simon Willison's Weblog
Simon Willison's Weblog

LeanCloud

LeanCloud 无了? - V2EX 8 月 1 日起, LeanCloud 国际版共享域名不再向中国大陆提供服务 - V2EX LeanCloud 凉了吗? - V2EX LeanCloud 将加入心动/TapTap - V2EX 关于我在使用 LeanCloud 时候遇到的的一些情况分享 - V2EX Leancloud 又双叒叕挂了,炸站了 - V2EX 为什么 LeanCloud 中国版云引擎的标准版实例价格是 ¥ 1/天,国际版的是 $1/天? - V2EX leancloud 强制绑定域名, valine 没得玩了 - V2EX Leancloud 又挂了 - V2EX 这回 Leancloud 域名被锁定到底是因为啥 - V2EX Leancloud 挂了 - V2EX LeanCloud 怎么使用 JavaScript 的 API 保存富文本? - V2EX 做了一个 LeanCloud 数据存储的导出工具 - V2EX Leancloud 的价格方案是不是有点不合理啊 - V2EX LeanCloud 发布了多客户端实时同步数据的功能,欢迎试用 - V2EX 如何在 LeanCloud 开通 cdn 加速 - V2EX LeanCloud 的云引擎是什么配置,为什么免费版的性能还比阿里云的最低配要快? - V2EX 有没有 leancloud 代替方案或开源产品推荐? - V2EX 国内短信价格下调 17%, 2016 年 7 月 5 日零时生效 - V2EX LeanCloud 和阿里云到底有什么区别? - V2EX 怎样才能写得一手好代码? - V2EX 赞 Leanote - V2EX LeanCloud 的推送服务稳定性捉急啊,两分钟前好好的突然又不行了。。。另外大家都用什么 Android 推送服务,求推荐 - V2EX 又来。。。LeanCloud 中国节点的后端存储集群出现问题 - V2EX Leancloud 又挂了?全国都无法 ping 通 - V2EX leanapp.cn 下域名无法验证微信? - V2EX LeanCloud 你们的 push 是不是挂掉了,发了几个都不行啊 - V2EX 请允许我水一下,每次敲打 AV.Object...,都会让我下意识的乱想,不能好好的工作,你们设计的时候是如何考虑的,虽然我知道是之前品牌的简称…… - V2EX 使用 New Relic 监控云引擎应用的性能 - V2EX 「产品更新」高效内存存储服务 LeanCache 正式发布 - V2EX 「产品更新」2015 年 10 月 LeanCloud 产品更新汇总 - V2EX LeanCloud 的 PHP SDK 发布了 「重要的事情说三遍」将数据安全捍卫到底:权限管理( acl)文档全新发布 「更新日志」2015 年 9 月 LeanCloud 更新汇总 - V2EX 有 leancloud 的人在吗? - V2EX LeanCloud 中的 Relation 是不能同时 add 和 remove 的么? - V2EX LeanEngine 2.0 升级 3.0 指南 - V2EX 云代码 通过 leancloud 的命令行部署失败 - V2EX 如何避免使用 JS sdk 的页面被恶意使用网页开发者工具写个死循环调用 leancloud API? - V2EX 创业公司,北京 iOS 主程, 30k+, React Native, LeanCloud 用户。 - V2EX 我 leancloud 账号用 gmail 邮箱注册,但是忘记了登录密码,申请更改密码但是验证信息收不到,怎么破 - V2EX LeanCloud 发布简单好用的 Web 统计 - V2EX 如何在 React Native 中使用 LeanCloud? - V2EX LeanCloud 数据存储起码要交 200 块才能给数据表加设值唯一字段?? - V2EX Web 实时通信 Demo - V2EX 基于 LeanCloud 的 JavaScript 实时对战游戏简单 Demo - V2EX 对六月六日 LeanCloud 多项服务发生中断的说明 - V2EX LeanCloud JavaScript 发送短信 LeanCloud JavaScript 推送 SDK - V2EX
基于 LeanCloud 云引擎的 Web 全栈方案: LeanEngine-Full-Stack - V2EX
LeanCloudRRY · 2015-11-09 · via LeanCloud

很多工程师使用 LeanCloud 之后,发现一个人就可以 hold 住一个完整项目,尤其是一个 Web 项目。原因很简单,本来复杂繁琐的数据库操作,通过使用 LeanCloud 的 JavaScript SDK 变得轻而易举,再结合 LeanCloud 提供服务器端容器 —— LeanEngine (支持两种环境 Nodejs 和 Python ),就可以很高效地开发出一个 Web 端项目。

背景

开始尝试 LeanCloud 时项目并不大,也不算复杂,大家都是很简单地去写代码,但是随着使用的深入及越来越顺手,有些工程师开始尝试设计复杂的项目。只要项目复杂了,就会有很多底层的事情需要考虑,比如协作分工、自动化流程、代码组织结构、框架选择、国际化方案等等。 LeanCloud 自身的很多项目就是基于本身提供的服务,在这个过程中我们也遇到过、纠结过很多问题,所以将我们目前使用的 Web 全栈方案整理了一下,可以当做一个 Generator 或者 Seed ,供大家交流和使用。

简介

项目名为「 LeanEngine-Full-Stack 」,就放在 LeanCloud 官方的 GitHub 仓库中,地址为 https://github.com/leancloud/LeanEngine-Full-Stack

LeanEngine-Full-Stack 是基于 LeanEngine Nodejs 服务的 Web 全栈开发技术解决方案。整合当前 Web 技术中通用的技术方案,与 LeanEngine 紧密结合,将基础架构、自动化构建、国际化方案等底层技术问题的解决方案都已经组织在一起。用户可以通过最简单的方式,直接开始业务开发,不用再次纠结那些底层技术选型。

主要技术栈:

* 语言层面,整套方案 JavaScript 代码全部使用 ECMAScript 6

* Server 端运行环境基于 LeanEngine Nodejs 环境,依赖安装通过 npm ,服务框架主要基于 Express 4.x

* Web 前端自动化方案主要基于 Gulp ,框架基于 Angular 1.4.x , UI 框架主要基于 Angular Material ,构建依赖基于 npm , Web 前端依赖通过 bower 安装,样式通过编写 SASS 而非直接写 CSS 文件

整个脚手架 Server 端完全基于 LeanEngine ,底层已经将 API 路由的基础结构做好,并且将一些常规处理也整合在内,已选型的技术方案主要包括:

* 服务端基本代码结构、组织结构

* 基础的路由分层,默认在 /api/ 路由下

* 对 API 的 HTML5 CORS 跨域协议的设置

* 对访问域白名单控制,集成的可配置文件

* 常规错误处理等

Web 前端从整体技术栈选择上,可以看出这是一个稳健并且有一定前瞻性的技术方案。基于已经非常成熟的 Angular 架构体系, UI 设计层面基于 Google 积累多年而发布的设计语言 Material Design ,所以前端 UI 框架基于 Angular Material 框架。 Angular 1.4 版本在性能上提升了很多,完全面向现代浏览器,可以直接使用 ECMAScript 6 来开发。内部已经写好并整合的方案主要包括:

* 代码基本组织结构,趋向于 HTML5 Web Compoment 的组织方式

* 底层配置,包括 HTML5 CORS 协议的底层支持、域名白名单等配置

* 纯前端路由方案,基于 HTML5 History API 和 ui-router

* 自动构建系统,基础的代码压缩、合并、 ECMAScript 和 SASS 编译等过程,也会将构建后的生成代码拷贝到 public 目录中,供发布使用

* SASS 的基本结构,以及一些 Mixin 和基础单元的处理方式

* 纯前端的国际化方案,可以实时切换语言资源

基本结构

整套架构 Server 端与 Web 前端是完全分离,在 Server 端编写 REST API , Web 项目则是完全的 Web App ,而不是通过模板来耦合。 web-project 中是 Web 项目的全部代码,是完全独立的一套体系,也可以提出去,单独项目维护。

整套技术方案有很多细节,具体的使用方式可以到 GitHub 仓库中直接查看使用说明及源码。

非常欢迎感兴趣的开发者一起讨论,当然限于自身能力不足,也有很多可以改进的地方,恳请各位高手积极贡献代码。如果你对 Web 全栈开发有需求,欢迎尝试看看。

其他问题

业内最新的技术以及解决方案 LeanCloud 也都有持续跟进,并且我们也积极同 Angular 、 React Native 等团队积极交流,目前构建 Web App 的框架选择主要会在 Angular1.x 、 Angular2.x 、 React 和 Ploymer 中纠结一下,而我们最终选择了 Angular 1.4.x 版本。

主要解释下为什么没有选择 React ,目前 React 应该是大家最感兴趣的框架,但是并不成熟。 React 本身最创新的是解决了 View 层的分离,将渲染与编译过程分离,在 Web 端表现为将 JSX 变为 Virtual Dom ,再将 Virtual Dom 每次 Diff 后的部分渲染为 HTML 。而开发一个应用程序不仅仅需要这些,还需要一套完备的处理各种底层问题的方案。如我们在上面技术栈列出的那些, React 数据层 Flux 编程范式并不成熟, UI 层面组件稀缺,即便是前端路由方案也是颇有争议,黑科技不断。

所以,在这种情况下,因为要做的是一个长期可维护的产品,我们暂时不能选择 React 来做 Web App 。当然, LeanCloud 会持续跟进 React Team 的最新动态。另外,推荐一下 React Native ,虽然 React 构建 Web App 优势并不明显,但是 React Native 则是大大提高了 Native App 的开发体验,优势远大于目前的劣势,所以欢迎大家尝试一下, LeanCloud 的 JavaScript SDK 也支持 React Native 中使用。

为什么全部使用 ECMAScript 6 ?

一门编程语言会影响一个人的编程思路, ECAMScript 对 JavaScript 这门七天设计出来的语言做了很多优化和革新,比如箭头函数、语言层面的模块化、原生的 Promise 等都是让人眼前一亮的特性,其他大大小小的改进也很多。而且在 2015 年 ECMAScript 6 已经定稿,所有浏览器最终都一定会支持这个版本的 JavaScript ,那么有什么理由不开始尝试呢?而且通过很多的前端构建,可以让我们不用去过多考虑浏览器的兼容性,所以我们选择全部使用 ECMAScript 6 。

服务端通过在 LeanEngine 中运行 node --harmony 来实现对 ECMAScript 6 的支持,因为目前 Nodejs 4.x 刚刚发布,等完全支持了,就可以去掉 harmony 参数。前端通过直接写 ECMAScript 6 的方式来编码,而没有选择如 TypeScript 之类的 ECMAScript 6 超集,因为还是希望能够编写更纯粹的 JavaScript ,前端会通过 babel 自动化编译处理。总体来看,也算是稳健且有前瞻的选择。