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

推荐订阅源

V
Visual Studio Blog
量子位
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
Google DeepMind News
Google DeepMind News
小众软件
小众软件
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
雷峰网
雷峰网
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell

LeanCloud

LeanCloud 无了? 8 月 1 日起, LeanCloud 国际版共享域名不再向中国大陆提供服务 LeanCloud 凉了吗? LeanCloud 将加入心动/TapTap 关于我在使用 LeanCloud 时候遇到的的一些情况分享 Leancloud 又双叒叕挂了,炸站了 为什么 LeanCloud 中国版云引擎的标准版实例价格是 ¥ 1/天,国际版的是 $1/天? leancloud 强制绑定域名, valine 没得玩了 Leancloud 又挂了 这回 Leancloud 域名被锁定到底是因为啥 Leancloud 挂了 LeanCloud 怎么使用 JavaScript 的 API 保存富文本? 做了一个 LeanCloud 数据存储的导出工具 Leancloud 的价格方案是不是有点不合理啊 LeanCloud 发布了多客户端实时同步数据的功能,欢迎试用 如何在 LeanCloud 开通 cdn 加速 LeanCloud 的云引擎是什么配置,为什么免费版的性能还比阿里云的最低配要快? 有没有 leancloud 代替方案或开源产品推荐? 国内短信价格下调 17%, 2016 年 7 月 5 日零时生效 LeanCloud 和阿里云到底有什么区别? 怎样才能写得一手好代码? 赞 Leanote LeanCloud 的推送服务稳定性捉急啊,两分钟前好好的突然又不行了。。。另外大家都用什么 Android 推送服务,求推荐 又来。。。LeanCloud 中国节点的后端存储集群出现问题 Leancloud 又挂了?全国都无法 ping 通 leanapp.cn 下域名无法验证微信? LeanCloud 你们的 push 是不是挂掉了,发了几个都不行啊 请允许我水一下,每次敲打 AV.Object...,都会让我下意识的乱想,不能好好的工作,你们设计的时候是如何考虑的,虽然我知道是之前品牌的简称…… 使用 New Relic 监控云引擎应用的性能 「产品更新」高效内存存储服务 LeanCache 正式发布
基于 LeanCloud 云引擎的 Web 全栈方案: LeanEngine-Full-Stack
LeanCloudRRY · 2015-11-09 · via LeanCloud

很多工程师使用 LeanCloud 之后,发现一个人就可以 hold 住一个完整项目,尤其是一个 Web 项目。原因很简单,本来复杂繁琐的数据库操作,通过使用 LeanCloud 的 JavaScript SDK 变得轻而易举,再结合 LeanCloud 提供服务器端容器 —— LeanEngine (支持两种环境 Nodejs 和 Python ),就可以很高效地开发出一个 Web 端项目。
![]( https://blog.leancloud.cn/wp-content/uploads/2015/10/11a63b418c94684f838fd38347fe028d-625x427.png)
# 背景
开始尝试 LeanCloud 时项目并不大,也不算复杂,大家都是很简单地去写代码,但是随着使用的深入及越来越顺手,有些工程师开始尝试设计复杂的项目。只要项目复杂了,就会有很多底层的事情需要考虑,比如协作分工、自动化流程、代码组织结构、框架选择、国际化方案等等。 LeanCloud 自身的很多项目就是基于本身提供的服务,在这个过程中我们也遇到过、纠结过很多问题,所以将我们目前使用的 Web 全栈方案整理了一下,可以当做一个 Generator 或者 Seed ,供大家交流和使用。
## 简介
项目名为「 LeanEngine-Full-Stack 」,就放在 LeanCloud 官方的 GitHub 仓库中,地址为 [https://github.com/leancloud/LeanEngine-Full-Stack]( 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 和基础单元的处理方式
* 纯前端的国际化方案,可以实时切换语言资源
# 基本结构
![]( https://blog.leancloud.cn/wp-content/uploads/2015/10/92cc28672c967aba7fb78eda50aa2d64-625x284.png)
整套架构 Server 端与 Web 前端是完全分离,在 Server 端编写 REST API , Web 项目则是完全的 Web App ,而不是通过模板来耦合。 web-project 中是 Web 项目的全部代码,是完全独立的一套体系,也可以提出去,单独项目维护。
整套技术方案有很多细节,具体的使用方式可以到 GitHub 仓库中直接查看使用说明及源码。
非常欢迎感兴趣的开发者一起讨论,当然限于自身能力不足,也有很多可以改进的地方,恳请各位高手积极贡献代码。如果你对 Web 全栈开发有需求,欢迎尝试看看。
# 其他问题
![]( https://blog.leancloud.cn/wp-content/uploads/2015/10/9e426b6cecb7a272963dcb5330523b63-625x234.png)
业内最新的技术以及解决方案 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 ?
![]( https://blog.leancloud.cn/wp-content/uploads/2015/10/a4a4cebfff1d05327bdab9d516826e75.png)
一门编程语言会影响一个人的编程思路, 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 自动化编译处理。总体来看,也算是稳健且有前瞻的选择。