Dart Server開發環境搭建及新建運行項目


Dart除了可以使用Flutter進行移動應用開發、Web開發外,還可以進行服務器端開發,也就是後端開發。如建立後端服務、編寫接口、查詢數據庫、任務調度等等後端、服務器端的工作它都可以實現。接下來,我們就開始Dart Server開發的準備工作吧。本文將主要介紹:

  • Dart Server開發環境配置
  • Dart Server開發工具安裝
  • Dart Server開發的兩種創建Server項目的方式
  • 運行Dart Server項目

開發環境的搭建

Dart Server官方配置英文文檔地址:https://www.dartlang.org/tutorials/server/get-started
我們也可以使用DartPad體驗和運行Dart程序:https://dartpad.dartlang.org/
DartPad界面

1. 下載Dart SDK

官方英文文檔地址:https://www.dartlang.org/tools/sdk#install

本文是在Windows環境下進行安裝配置的。
Windows下需要先安裝chocolatey:https://chocolatey.org/
使用CMD命令安裝:

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

新建一個chocolatey.bat文件,將上面的這段命令複製進去保存。雙擊運行這個bat文件就會自動執行安裝chocolatey包管理器操作了。
安裝好之後,Windows命令窗口執行如下命令進行dart-sdk穩定版安裝:

C:\> choco install dart-sdk

Dart-SDK安裝
如果想安裝dev版,輸入以下命令:

choco install dart-sdk --pre

如果想更新dart-sdk,輸入以下命令:

choco upgrade dart-sdk

Linux需要執行以下命令:

> sudo apt-get update
> sudo apt-get install apt-transport-https
> sudo sh -c 'curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -'
> sudo sh -c 'curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list'
> sudo apt-get update
> sudo apt-get install dart

Mac下需要執行以下命令:

 > brew tap dart-lang/dart
 > brew install dart

當然除了用命令安裝Dart SDK外,我們也可以安裝Windows版本安裝包文件,下載地址:http://www.gekorm.com/dart-windows/
Dart Web SDK安裝包

在Dart Web SDK裏包含以下工具:
Dart Web SDK裏包含的工具

其實主要的命令工具就是:webdev,用來構建和部署Dart Web程序;dart2js,將dart文件轉爲js文件的編譯工具;dartdevc,一個模塊化的dart轉js文件的編譯工具。
Dart Web SDK裏包含的工具

chocolatey執行命令安裝完dart-sdk後,將Dart SDK的bin目錄加入環境變量:
配置Dart環境變量

測試我們的Dart SDK環境變量是否配置好,輸入如下命令:

dart --version

如能夠正確輸出版本號,則dart環境變量配置成功。
測試Dart環境變量是否配置成功

2. 下載開發工具

官方英文使用文檔地址:https://webdev.dartlang.org/tools/webstorm

開發工具官方推薦是WebStorm,當然也可以使用Visual Studio Code,也可以使用命令工具創建、運行項目。如果想支持命令行運行項目,這樣快速方便些。可以安裝webdev和stagehand(這裏需要安裝執行下面這兩個命令):

> pub global activate webdev
> pub global activate stagehand

安裝命令窗口:
安裝webdev和stagehand
注意:如果你想運行使用Dart2以下的版本,WebStorm版本至少要2018.1.3及以上。當然,現在基本都用Dart2及新版本開發了。

接下來下載安裝WebStorm:

WebStorm官方下載地址:https://www.jetbrains.com/webstorm/
WebStorm安裝界面

3. 創建Dart Server項目

最簡單的Dart應用程序包括如下部分:

一個以.dart後綴結尾的dart源文件;
一個最頂層的main()方法入口函數。

運行這個dart文件,我們可以使用命令:

dart main.dart

Dart官方 Server項目結構圖如下圖:
Server項目結構圖
bin目錄:主要放置命令行式應用的dart文件,其中的一個dart文件必須有main()入口函數。

lib目錄:應用額外使用的代碼或者庫文件。

pubspec.yaml:應用的配置和描述信息文件,和Flutter的pubspec.yaml功能一致。

命令行應用程序(Command-line apps):

Dart命令行應用程序從命令行獨立運行。 命令行應用程序通常用於爲Web應用程序提供服務器端支持,但它們也可以是腳本。
Dart VM直接運行Dart代碼而無需中間編譯。
命令行應用程序
使用WebStorm創建命令行應用程序:
WebStorm新建命令行項目
項目結構目錄如下圖:
項目結構目錄
.dart_tool目錄:主要是pub使用的相關支持文件、Dart工具相關,我們可以不管它。

bin目錄:應用程序入口,一般叫main.dart文件,裏面有main()入口函數。

pubspec.lock:生成的文件,指定應用程序所依賴的軟件包的版本號。

lib目錄:存放命令行程序的其他類、源文件,具體業務邏輯dart文件寫在這裏。

.packages文件:告訴Dart工具在哪裏獲取應用程序使用的包。該文件由pub get命令創建。你可以忽略這一點。

運行命令行應用程序:
運行項目
當然我們也可以使用命令運行:

pub run bin/main.dart

運行效果圖片:
運行項目

關於main()入口函數和其他頂層入口函數:
Dart允許您定義頂級函數,即未封裝在類或對象中的函數。 所有應用程序至少有一個頂級函數,即main()函數。
函數聲明包含兩部分:簽名和正文(a signature and a body)。
函數組成
簽名設置函數名稱,返回值的數據類型以及輸入參數的數量和類型。
函數組成
方法邏輯代碼寫在花括號({…})之間。如果正文是單個表達式,那麼可以跳過大括號並使用=>簡寫:

double milesToKM(double miles) => miles / 0.62;

關於文件命名:一般都是小寫,單詞間用下劃線(_)分隔。

以上是簡單的命令行應用程序(Command-line apps)創建過程。

官方詳細的命令行應用程序(Command-line apps)編寫英文文檔地址:https://www.dartlang.org/tutorials/server/cmdline ,後續將給大家詳細講解。

示例代碼:

main.dart

import 'package:untitled2/untitled2.dart' as untitled2;

main(List<String> arguments) {
  print('Hello world: ${untitled2.calculate()}!');
}

untitled2.dart

int calculate() {
  return 6 * 7;
}

接下來看下Http Server後端應用(HTTP Clients & Servers)的創建方法:

使用WebStorm創建:

新建項目:
WebStorm新建項目
選擇Dart項目,點擊CREATE:
WebStorm新建項目
或者創建Dart Web項目,再新建個bin目錄也可以。
WebStorm新建項目
項目結構目錄如下圖:
項目結構目錄
運行項目:
運行項目
運行後,可以看到控制檯顯示的日誌,如果看到類似的Dart Server啓動成功就可以訪問我們的頁面了:
運行項目
頁面效果截圖:
運行效果
頁面信息監控:http://127.0.0.1:54212/#/vm
頁面信息監控
官方詳細的Http Server後端應用(HTTP Clients & Servers)編寫英文文檔地址:https://www.dartlang.org/tutorials/server/httpserver ,後續將給大家詳細講解。

示例代碼:

import 'dart:io';

import 'package:args/args.dart';
import 'package:shelf/shelf.dart' as shelf;
import 'package:shelf/shelf_io.dart' as io;

main(List<String> args) async {
  var parser = ArgParser()..addOption('port', abbr: 'p', defaultsTo: '8080');

  var result = parser.parse(args);

  var port = int.tryParse(result['port']);

  if (port == null) {
    stdout.writeln(
        'Could not parse port value "${result['port']}" into a number.');
    // 64: command line usage error
    exitCode = 64;
    return;
  }

  var handler = const shelf.Pipeline()
      .addMiddleware(shelf.logRequests())
      .addHandler(_echoRequest);

  var server = await io.serve(handler, 'localhost', port);
  print('Serving at http://${server.address.host}:${server.port}');
}

shelf.Response _echoRequest(shelf.Request request) =>
    shelf.Response.ok('Request for "${request.url}"');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章