Nodejs:完美的 js 的世界
Nodejs:完美的 js 的世界
作为一个悲催的程序员,开发过前台,后台,甚至app,所以各种语言和技术尝试了很多,虽然很多不是特别深入,但是都曾完成过独立的项目。每次做一个项目前就要花不少的时间去选择,想找个简单实用兼容性好的语言和框架,以求减少项目开发量和周期。后来开始独立开发项目,涉及设计、前台、后台方方面面,更希望有个简化的框架,统一的开发环境,让一切简单起来。
HELLO,JS
js 之前也一直在用,只是很简单的前台逻辑和操作,用用jquery 就全部搞定了。突然有一天就发现了 nodejs,发现前后台的开发环境竟然可以统一起来,于是心里痒的难受,到了不试试睡不着觉的状态。正好正准备开发一个火星问答的项目,于是就毫不犹豫的进去了。
后台JS
因为有js的底子,所以学习nodejs算不得难,一周左右就可以顺利写业务逻辑了。借助各种优秀的插件(express + async + …)及文档,后台进行的颇为顺利,一周左右基本款的功能就开发成型了,同时对js的使用和理解提高了很多,在接下来的前台和app开发中就更加得心应手了。
前台 js
前台选了bootstrap ,网页版的js代码并不多,所以就简单的用了用jquery就都够用了。如果此时选择后来使用的angular ,应该会是更好的选择,只是当时没时间尝试这么多新东西,赶进度更重要。
app JS
火星问答本来只是练手开发的,上线后反而受到很多用户的喜欢,所以就不断的增量开发下来。添加了更多的功能与内容。也在不断的改善使用体验,直到觉得应该尝试一下app,让用户更方便的使用。当然不想去写ios和android的native应用,不熟练,而且还是相互独立的,以后更新要死人的,打算用html5 +cordova的方式。 以前用过mobilejquery 开发过一个项目,效果很不理想,这次就另外选择框架,选来选去确定了google的angular 框架,原因主要是看了他的demo,代码层级很直观,扩展也容易,更喜欢他的双向数据结构,几行代码就可以建立前后台的依赖。刚开始用的时候确实觉得有上当受骗的感觉,和之前的js使用很大的不同,语法都有区别,让我怀疑这到底是不是tm的js,为毛和其他的js长的不像,不过硬着头皮做下来,慢慢就理解了,原来用angular写的业务代码并不是普通js代码,运行是需要angular框架先compile 进行预处理,所以与普通js代码有些区别。angular学习成本有些高,搞了2周多才搞清楚啥东西,才能比较顺利的只关注业务逻辑的编写。不过一旦上手了,发现写业务逻辑及其的方便,模块依赖,数据绑定,用最少的代码实现需要的功能。不知不觉写的代码越来越有层次了,后头再看之前写的网页js代码,一坨屎一样,只是懒的去重写了。如果以后再写前台,一定使用angular 。app的UI因为图简单也只是选择了适合angular 的bootstrap,用起来和网页版的bootstrap 基本一致。总的来说,app开发因为选择angular的原因,周期拉成了一倍,一个多月才出第一版,好在angular 逐步熟悉了,后面再开发就容易了。
桌面应用 JS
火星问答本身需要桌面应用,只是因为看到了可以用js做桌面应用,技术宅的毛病强迫自己去尝试一下。使用node webkit ,不需要修改angular 写的app代码,只要添加node webkit需要的包信息,然后通过软件打包就可以了,2个小时就做成了桌面应用,相当方便,缺点是打包过程中要打包chromium 内核,最后生成的exe相当的大,40多M,实在让人无法忍受,因为此app生成的apk只有3M多。因为桌面应用纯粹为了试验,所以也没有进行进一步的深入。
至此,通过火星问答这个项目,体验了用js一种语言做前后台、app、桌面应用的全过程,感觉对于独立小项目,js绝逼是一个极好的选择,统一的开发环境,统一的语言,前后台代码有的甚至可以copy通用,也不需要考虑各种语言之间的编码不统一,字符串处理不一致等问题。以后打算用js做一个通用的项目seed,再做其他项目时只要替换其他的业务代码,估计时间可以节省一半以上。
Node.js:完美的 JS 的世界
作为一个悲催的程序员,我开发过前端、后端,甚至App,因此尝试了很多不同的语言和技术。虽然我对每种技术的掌握都不够深入,但每个项目我都能够独立完成。每次开始新项目前,我都要花费大量时间来选择最适合的语言和框架,以期简化项目开发流程并缩短开发周期。后来,我决定独立开发一个项目,涉及设计、前端、后端等各个方面,更加希望有一个简化的框架和统一的开发环境,使一切变得简单起来。
HELLO, JS
JavaScript 之前我也一直在用,只是做一些简单的前端逻辑和操作,用 jQuery 就能搞定一切。突然有一天,我发现了 Node.js,发现前后端的开发环境竟然可以统一起来,于是心里痒得难受,到了不试试睡不着觉的地步。正好我正在准备开发一个名为“火星问答”的项目,于是我毫不犹豫地开始了 Node.js 的学习之旅。
后台 JS
由于有 JavaScript 的基础,学习 Node.js 并不算太难,大约一周左右就能顺利写出业务逻辑。借助 Express、Async 等优秀的插件以及丰富的文档,后台开发进行得颇为顺利。一周左右的时间,基本功能就已经开发成型了。在这个过程中,我对 JavaScript 的使用和理解提高了很多,在接下来的前端和 App 开发中也更加得心应手。
示例代码:Express 路由
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
前端 JS
前端选择了 Bootstrap,网页版的 JavaScript 代码不多,所以简单的用用 jQuery 就足够了。如果当时选择 Angular,可能会是更好的选择。但由于赶进度,我并没有尝试太多新的东西。
示例代码:Bootstrap 和 jQuery
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mars Q&A</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<button id="btnClickMe" class="btn btn-primary">点击我</button>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script>
$(document).ready(function(){
$('#btnClickMe').click(function(){
alert('你点击了按钮!');
});
});
</script>
</body>
</html>
App JS
“火星问答”本来只是一个练手项目,上线后却受到了许多用户的喜爱,因此我不断地增量开发,添加更多功能与内容,并不断改善用户体验。最终决定尝试开发一个 App,让用户使用起来更方便。我不愿意去写 iOS 和 Android 的原生应用,因为不熟练且更新困难。于是选择了 HTML5 + Cordova 的方式。
在选择框架时,我最终确定了 Google 的 Angular 框架。原因是它的代码层级直观,扩展容易,尤其是其双向数据绑定特性,只需几行代码即可建立前后台的依赖关系。尽管刚开始使用 Angular 时遇到了一些困难,但随着熟悉度的提高,我发现写业务逻辑变得更加方便。
示例代码:Angular 模块依赖
// app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
桌面应用 JS
由于“火星问答”项目本身需要一个桌面应用,而我了解到可以使用 JavaScript 来创建桌面应用,因此决定尝试一下。我使用了 Node WebKit,不需要修改 Angular 编写的 App 代码,只需要添加 Node WebKit 需要的包信息,然后通过软件打包即可。整个过程非常简便,只需两个小时就完成了桌面应用的制作。不过,由于需要打包 Chromium 内核,最终生成的 EXE 文件体积较大,约为 40 多 MB,相比之下 APK 文件只有 3 MB 多。由于这是一个实验性的项目,我没有进一步深入优化。
示例代码:Node WebKit 打包
// package.json
{
"name": "mars-qa-desktop",
"main": "index.html",
"window": {
"title": "火星问答",
"icon": "assets/icon.png"
}
}
通过“火星问答”这个项目,我体验了用 JavaScript 一种语言来做前后端、App 和桌面应用的全过程。对于独立的小项目,JavaScript 绝对是一个极好的选择,统一的开发环境和语言使得前后端代码可以复用,避免了多种语言带来的编码和字符串处理问题。未来我打算用 JavaScript 创建一个通用的项目模板,这样在开发其他项目时只需替换业务代码,预计可以节省一半以上的时间。
Full-Stack?
还算不上吧,只是一个人做独立项目多了,希望能找到一种更简单更高效的全端框架,然后做成seed,然后就可以简化开发,提高效率。正在考虑根据之前的经历完成这个seed,对那些和自己一样独立开发项目的人有所帮助
也想折腾,后端做前端的太难入门了的感觉
建议试试bootstrap,后端做前端最大障碍应该是ui吧,ui能看的过去了,至于写逻辑代码,就是强项了
人家都说前端入后端难啊。。
就是ui,想着html、css,js的就要学一堆的感觉
小牛哈
在开发过程中,选择合适的语言和框架是非常重要的。Node.js 可以说是现代 JavaScript 开发的一种完美解决方案,它使得前后端统一开发成为可能。以下是对“Nodejs:完美的 js 的世界”帖子内容的回答:
HELLO, JS
Node.js 让我们可以在同一个语言环境中处理前端和后端的逻辑。这不仅减少了语言切换带来的负担,还提高了开发效率。
// 示例代码:简单的 Node.js HTTP 服务器
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello, World!');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
后台 JS
使用 Express 框架可以使后台开发变得更加便捷。Express 提供了强大的中间件系统和路由功能,使得创建 API 变得简单。
// 示例代码:使用 Express 创建一个简单的 REST API
const express = require('express');
const app = express();
app.get('/api/data', (req, res) => {
res.json({message: 'Hello from the server!'});
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
前台 JS
Bootstrap 是一个非常流行的前端框架,可以让页面布局变得简单且响应式。
<!-- 示例代码:使用 Bootstrap 的 HTML 页面 -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Example Page</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<h1>Welcome to the Example Page</h1>
<button class="btn btn-primary">Click Me!</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
APP JS
Angular 是一个非常强大的前端框架,适用于复杂的应用场景。它的双向数据绑定和依赖注入机制使得开发变得高效。
// 示例代码:使用 Angular 的组件
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `<h1>{{ title }}</h1><input [(ngModel)]="title" />`
})
export class AppComponent {
title = 'My Angular App';
}
桌面应用 JS
使用 Node WebKit(NW.js)可以将网页应用打包成桌面应用,无需修改原有的代码。
// 示例代码:使用 NW.js 的 main.js 文件
var gui = require('nw.gui');
var win = new gui.Window();
win.showDevTools();
总结来说,Node.js 和相关的前端框架(如 Express、Angular、Bootstrap)为开发者提供了一个统一且高效的开发环境,适用于前后端以及桌面应用的开发。