Web开发在过去20多年时间里如何改变了我

web在过去20年时间里改变得相当快。越来越多的逻辑从服务器端移动到了客户端。不但需要在客户端编写更复杂的JavaScript代码,而且最近几年还发生了一些奇特的事情:JavaScript正在转移到服务器,而web技术则往桌面转移。这已经不是什么新鲜事了,但20年前谁会想到这种情况?

web改变了,因而我的技术堆栈也变了。貌似我的堆栈变回到了roots。 20年前,我从HTML和JavaScript开始,再到使用VBScript的经典ASP。 2001年,我开始陶醉于ASP.NET和VB.NET,并用到了产品中,直到2006年底才不再这么干。2007年年底,我开始使用C#编写ASP.NET。HTML和JavaScript仍然参与其中,但多多少少被封装在第三方控件中,并且jQuery当时是JavaScript的别名。JavaScript的一切都是jQuery。ASP.NET WebForms感觉巨大又不是很灵活,但它能有效工作。后来——2010年——我用Silverlight、WinForms和WPF做了很多东西。

ASP.NET MVC出现了,web这个东西开始再次比ASP.NET WebForms感受更自然点。从一个ASP.NET开发人员的角度来看,web开始变得更好:更加干净、灵活、轻便和自然。

但也出现了一些新的东西。一些来自于ASP.NET世界之外的东西。强大的JavaScript库,如KnockOut、Backbone,以及后来的Angular和React。第一个单页应用程序框架(对不起,我不想提蹩脚的ASP.NET AJAX…)出现了,UI逻辑从服务器转移到了客户端。(好吧,我们确实在2005年搞回了一个很酷的SPA,但我们没有想过如何用它创建一个框架。)

NodeJS通过在服务器上使用JavaScript再次改变了世界。你只需要两个不同的语言(HTML和JavaScript),就可以来创建很酷的web应用。我不怎么对NodeJS感兴趣,除了在后端使用它,因为一些工具基于NodeJS。也许这是一个错误,谁知道呢; )

现在我们有了ASP.NET Core,这感觉比传统的ASP.NET MVC更自然得多。所谓的自然在这种情况下,意味着和编写传统ASP的感觉几乎相同。这也就是说使用无状态的web工作,而不是试图修复它。使用Request和Response比传统的ASP.NET MVC工作起来更直接,比ASP.NET WebForms甚至就更直接得多。自然并不意味着你必须编写和传统Asp同样非结构化的废话。 ; )

由于我们已经有了非常酷的客户端JavaScript框架。和简化了的、简约的服务器端框架,服务器部分就被减少到仅仅用于在REST服务上提供静态文件和数据。

正是这个时候,深入了解TypeScript变得有了意义。但是到这个时间点为止,它对我还没有意义。我用JavaScript编写代码大概有20年时间,但我从来没有在单个项目中写过这么多的JavaScript代码。之后,在过去几年时间里我开始使用AngularJS。Angular2是应该好好研究TypeScript的一个原因,因为现在的Angular2完全是用TypeScript写的。

几个星期前,我启动了我第一个真正的NodeJS项目:一个使用NodeJS来为用户提供高度灵活脚本运行时的桌面应用程序。NodeJS提供功能和UI给用户,所有都是用TypeScript写的,而不是普通的JavaScript。为什么?因为TypeScript有很多意想不到的好处:

  • 仍然可以编写JavaScript
  • 帮助编写小的模块和结构化的代码
  • 帮助编写NodeJS兼容模块
  • 一般说来,不需要为每个模块写所有的JavaScript代码
  • 只要专注于所需要编写的功能

这就是为什么TypeScript对我来说是个大帮手。当然类型化的语言在很多情况下也是有用的,但是——使用JS工作了20年——我喜欢隐式的类型JavaScript语言的灵活性,并且我对它很熟。这意味着,从我的角度来看,有关TypeScript的优点是,我仍然能用TypeScript编写隐式的类型代码,并利用到JavaScript的灵活性。这就是为什么我说“仍然可以编写JavaScript”的原因。

Web技术改变了,我的技术堆栈也改变了,工具也是。所有这些东西都变得更为轻巧,连同工具一起。控制台回来了,IDE变回为它们的root:只不过是一些有着类似语法高亮和智能感知这些作用的文本编辑器。目前,我更喜欢根据我工作的项目类型使用有着“瑞士军刀”之称的Visual Studio Code或Adobe Brackets。两者都开始变得非常快速,包括一些不错的功能。

使用轻便的IDE令人愉悦。一切都很快,因为通过我需要开发的app可以使用机器的资源,而不必通过我需要使用来开发app的IDE。这使得发展速度快了很多。

现今启动一个IDE意味着启动cmder(Windows上我最喜爱的控制台),改变项目文件夹,启动控制台命令,从而查看typescript文件,保存后编译。我可以启动另一个控制台来使用如NPM、gulp、typings、dotnet CLI、NodeJS等工具;以及启动我最喜欢的轻量级编辑器来编写代码!

原文发布于微信公众号 - Java学习网(javalearns)

原文发表时间:2017-03-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

C# Xamarin移动开发基础进修篇

42020
来自专栏张善友的专栏

如何有效监控.NET 应用程序

     当你的.NET应用出现性能问题的时候能很快得找到问题的症结吗? 这是一个运营的企业应用所必需考虑的问题,最近工作中碰到很多这方面的问题,运行中的系统完...

26870
来自专栏.NET技术

MVC系列之开始

   4月5号晚本来应该写出来的,这几天迷上了炉石传说,打得有点疯,明天又得上班了,收拾心情还是得写出来。上星期5晚上回家的时候,不得不吐槽一下的确有点背。6点...

11720
来自专栏张善友的专栏

MSDN 杂志 Windows 8 特刊

Windows 运行时: 使用 Windows 运行时改变应用程序开发的面貌 Windows 运行时是创建 Windows 应用商店应用程序的核心。 了解它如何...

18970
来自专栏张善友的专栏

微软发布 Windows Server 2008 R2 with Service Pack 1 180天 评估版

        在微软正式发布 Windows 7 / Windows Server 2008 R2 Service Pack 1 之后,现在又发布了 Wind...

23060
来自专栏施炯的IoT开发专栏

Windows Phone SDK 8.0 新特性-Speech

1. 引言     随着Windows Phone SDK 8.0的发布,其包含的新特性也受到了广大开发者的关注,其中之一就是语音方面的提升。其实在Window...

222100
来自专栏我有一个梦想

QT Creator 快速入门教程 读书笔记(一)

一 Qt简介 Qt 是一个跨平台的C++应用程序框架,支持Windows、Linux、Mac OS X、Android、iOS、Windows Phone、嵌入...

64560
来自专栏张戈的专栏

JuiceSSH:超好用的安卓移动端Linux系统运维终端工具

去年年底,我考虑到回老家之后可能会有工作上的紧急运维事务需要处理,家里没电脑网络,又不想背笔记本,所以考虑入手一个平板。安卓、IOS、Win8 板子,考虑良久之...

1.4K80
来自专栏Guangdong Qi

iOS开发常用之测试调试、动态更新

29320
来自专栏空帆船w

最好用的 Markdown 编辑器

Markdown ,相信没有人不知道了吧,这里不多介绍了。如果还没听过,强烈建议百度一下,五分钟即可上手,包你会了之后就不想zai用 Office Word 写...

32330

扫码关注云+社区

领取腾讯云代金券