To Code or Not to Code 编还是不编

By | 07月27日
Advertisement

原文地址 http://blog.backand.com/code-no-code/

以下为翻译:

编还是不编

当为一个现有的程序编写前台的时候,首批常见的问题之一就是我们如何去构建它。

选择特定的代码解决这个问题使得最后的产品具有很大的灵活性。但是基本上,它在开发和后续维护中消耗大量的金钱和时间。

某些情况下,尽可能的抽象整个开发过程,缩小需要写的代码数量是更加合理的。

在这篇文章中,我们列举了着手在现存数据上构建应用程序的一些方式以及为何选择这种方式而不是那一种。文中也涉及了相关的前端代码,并着重描述了

哪些场景下,像AngularJS这种指令驱动的(directive-driven)方式能够被高效且有效的使用。

一点点来

对于网页开发来说,我们有很多种选择,他们都有其各自的优点。

通常我们会选择不需要编程的那个方式,像www.wix.com这样的网站使得你能够不需要编程就可以构建你的网站,它让你能够使用图形化编辑工具去设计你的网站的外观界面,并尽可能使得数据存储在后端。许多托管商(hosting provider)提供这种类型的工具,这些工具在复杂程度上有所差别。如果你的网站比较小或者数据并不复杂,那么这种类别的解决方案是非常不错的。但是基本上这种网站都有一个通病,当网站描绘复杂功能时,会出现问题。(使用上述工具构建前端的)这些应用通常没有数据库,将应用程序的数据库和这种接口绑定在一块将会使得开发中牵涉某些定制的代码。另外,依赖这个(图形构建)服务(来构建前端代码)使得前端的源代码是难以被修改。后续很多事情将变得难以完成,比如 过渡到Angular。

将前端解脱出来

让我们接着往下来,我们经常会遇到这样一些服务,他们将应用程序的后端部分封装成一个API,这样使得你能够全神贯注的关注于前端的开发。比如,

你选择的某项服务会为你提供一个REST API,此时Angular只需要关注于将从这个API中获取的数据展现出来就好了。像Parse, Backand 以及Firebase这些公司都提供这样的API服务,他们为你的来自任何位置或应用的数据建立了一个数据存取点。

如果你自己专注于开发前端,而让其他人全权负责后台的开发。你将会受限于服务提供商。受制于他们是如何构建服务的,也行他们只是简单的直接从你的数据库中抽出一个REST API,或许他们允许定制组件开发。然而,大多数情况下,前端是你唯一可以完全定制的事情。

完全操作(Providing the FullStack)

要达到真正的定制常常需要使用完全的操作,这个需要使用一个像Rails这样的对象关系映射工具来开发后台。这将会使得你能够极大方便的操控底层的数据存储。虽然很多的开发框架提供工具能够使得人们从前端开发中解脱出来,但是适当的关注REST API的开发能够让你使用像AngularJS 和Bootstrap这样的工具快速的构建一个一致的时髦的界面。这种方式的缺点有两个。首先是一个不太明显的缺陷,那就是你必需有一个开发团队来依据现存数据需要的界面来开发REST API。这个过程可能需要耗费数星期甚至数月,之后,你有的也只不过是一个完成的后端。另一个比较明显的缺点是,你需要完成方方面面的事情,托管,伸缩,安全,等等等等。这个极大的增加了实现开销。并且会导致维护过程中再度开销。

多种方式融合

现在这种方式已经存在并有不止一个实现,它们使用一个能够集成你的现存数据,提供REST API 的工具,并最小化涵盖可真正定制的后端开发。这样的工具有Django。它提供基本的ORM能力,提供一个做好了的针对你的数据的管理界面,这种方式可以使用内置的展示功能,也可以使用REST后端去驱动Angular前端的方式。它的缺点和上面的完全方式是相同的,只不过弱化了它的开销。你的团队使用这种方式将会降低开发时间。但内部的托管,安全,维护仍然是必须要做的。

这种方式的另一个实现是像Backand这样的Backend-as-a-Service提供商,它获取你现存的数据库,并且在几分钟之内产生一个前端的管理工具,并且后端的所有组件,包括数据库扩展,权限以及托管代码都是在外部进行管理的。Backland同样也动态的给你一个ORM并且基于你的数据建立一个REST API,给你的应用程序的界面提供一个简单的接口。这种方式使得你能够花费降到最低,且能够获得最高的产出率。虽然你牺牲了某些后端的灵活性,但是开发定制组件的可用工具可以很大程度上弥补这些。

结语

总结一下,平台的选择基本上归结于你认为你的程序可能会有多复杂。如果你愿意牺牲绝大部分的灵活性,那么你可以不用为你的项目写任何的代码,像Wix这样的工具是值得看一看瞧一瞧的。然而当你要将angular应用到展示你的数据上面的时候,你将会看到很多种方式,你可以从中有很多的选择。你的选择取决于你的开发团队的不同。比如对于平台的掌握,对于开发和基础设施的可用预算,现存的功能,团队的知识储备以及其他任何能够影响平台选择的因素。最后,开发网页应用最好的方式是这种方式:最适合你团队需要的方式。

今天,试着构建你的Angular app并且使用Backland将其连接到任何一个数据库,现在行动起来吧。

Similar Posts:

  • MySQL更新时Error Code:1093和Error Code:1175的解决办法

    Error Code: 1093. You can't specify target table 'ws_product' for update in FROM clause 这个是我们在使用update或者delete语句时,在where条件里面加入的子查询导致的.例如如下的update语句: update table set type = 'static' where id in ( select id from ws_product where first_name ='superman'

  • Install error "Exit Code: 6" or "Exit Code: 7" | Creative Adobe Production(安装Adobe产品时出错及解决方案)

    安装Adobe 产品时出现以下提示错误: Exit Code: 7 -------------------------------------- Summary -------------------------------------- - 0 fatal error(s), 2 error(s), 4 warning(s) WARNING: DS013: Payload {7E5AA19B-0B85-4f44-BA26-728851489200} Adobe Flash Player 10

  • Introduce to algorithm--------pseudo code to C/C++ code (chapter 16)

    贪心算法 贪心算法(greedy algorithm)就是这样的算法,它在每一步都做出在当时看起来最佳的选择.也就是说,它总是做出局部最优的选择,寄希望这样的选择能导致全局最优解. 但需要注意的是: 贪心算法并不保证得到最优解. 当将贪心算法应用于特殊的一个问题时,需要特别注意贪心性质的正确性:它是否能保证得到最优解. 所有的算法其实并不是书上描述的那样简单,需要对问题的理解.算法的分析.算法的证明.The idea inside algorithm is more important. 活动选

  • 【随感】feel good when your code helps other ,some code learner abroad

    Recently , i am learning python in a tutorials website,and lots of people stuck by a question ,so i published my passed answer ,and people reply to me and thanks for me , that really encourages me. Of course i am afraid of making mistakes especially

  • 20140407 泛型编程和模板 函数指针 类的静态函数 静态成员变量 静态联编 动态联编

    1.泛型与模板的区别 泛型是个更广泛的概念,java,C#等其他语言也"实现"了泛型概念.对于C++语言来说,使用了模板实现泛型.想想"C++模板","泛型"这种技术,这种概念,目的是更好地进行代码复用,更好地表达类型,类型表达的安全. 希望对您有些帮助. 2.函数的指针 编译时分配的函数入口地址,函数名就是入口地址:最常用的用途就是把函数指针作为参数传给其它函数: #include<stdio.h> int jug(int x, i

  • 一个编玩游戏编学Python的网站~

    http://www.codecombat.com 比国内的那些游戏网站好玩多了,还可以穿装备,编写好程式后和其他玩家在线PK,只是汉化的程度不太理想,只是界面的汉化,游戏中的声音和说明还是E文版的.

  • C++程序设计实践学材系列(9)——1.2.1 下载、安装Code::Blocks

    回到系列文章的目录--[系列文章目录] 回到本章目录--[第1章目录] 1.2.1 下载.安装Code::Blocks Code::Blocks是一个开源的自由软件. 下载Code::Blocks,到其官网(http://www.codeblocks.org),可以找到最新的版本,以及以往的版本. 可以下载Code::Blocks的源代码(Download the source code),这样,就可以测试.修改和扩充Code::Blocks了.但对于初学者而言,是要用Code::Blocks编

  • Create Primary Key using Entity Framework Code First

    原文:http://www.codeproject.com/Articles/813912/Create-Primary-Key-using-Entity-Framework-Code-Fir Introduction This article describes the effect of Entity Framework Code First convention and configuration for creating Primary Key column. Entity Framew

  • Code First :使用Entity. Framework编程(8) ----转发 收藏

    第8章 Code First将走向哪里? So far, this book has covered all of the Code First components that reached their final release at the time of writing. There are, however, some notable features that are still in preview at this time that you should be aware of.

  • 微信授权登录,关于调不起授权页面,无法响应回调方法,获取不到code 详解

    前期准备工作:申请AppId,下载资源包jar.文档等. 微信授权登录步骤: 1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数:(第1步官方文档写得很模糊分散,做微信授权登录的时候遇到很多问题,现在总结记录下来) 2. 通过code参数加上AppID和AppSecret等,通过API换取access_token,openid: 3. 通过access_token和openid进行接口调用,获取用户基本数据资源或帮

Tags: