在 Mac OS 上使用 TypeScript 編寫 ASP.NET Core 1.0 應用


在 Mac OS 上使用 TypeScript 編寫 ASP.NET Core 1.0 應用

警告

您當前查看的頁面是未經授權的轉載!
如果當前版本排版錯誤,請前往查看最新版本:http://www.cnblogs.com/qin-nz/p/aspnet5-using-typescript-on-mac-os.html

提示

更新時間:2016年01月20日。

在 Mac OS 上,並沒有時候編輯 ASP.NET Core 1.0 的 IDE,只有一個 Visual Studio Code 可用, 這種情況下,編寫后端代碼是比較費勁的(對於習慣使用IDE的人來說),所以本文從前端的角度來介紹下。

本文將引導你創建一個 d3 數據變化曲線的展現過程。

什么是 TypeScript

寫過 JavaScript 的人都知道, JavaScript 只是一個腳本語言,並不適合寫大型程序。 (至少幾年前是這個樣子的,現在會有很多的擴展來是 JavaScript 變得更強大。)

TypeScript 是 JavaScript 的超集,任何合法的 JavaScript 代碼也是合法的 TypeScript 代碼。

瀏覽器只支持 JavaScript ,不支持 TypeScript ;但是, TypeScript 可以在服務器端編譯為 JavaScript ,因此可以在瀏覽器上運行。

注解

Angular 2.0 就是基於 TypeScript 開發的。

Angular 2.0 Beta 已於聖誕節前發布。

什么是 d3

D3 是最流行的可視化庫之一,它被很多其他的表格插件所使用。 它允許綁定任意數據到DOM,然后將數據驅動轉換應用到Document中。 你可以使用它用一個數組創建基本的HTML表格,或是利用它的流體過度和交互,用相似的數據創建驚人的SVG條形圖。

創建一個 ASP.NET Core 1.0 應用

使用 yo aspnet 創建一個 ASP.NET Core 1.0 的 Web Application Basic 應用。

注解

如果你還沒有在你的 Mac OS 上安裝過 .NET 運行環境, 或者不會創建一個空的 ASP.NET Core 1.0 應用, 請參考 在 Mac OS 上創建並運行 ASP.NET Core 1.0 網站

安裝 TypeScript

在 Windows 下使用 Visual Studio 2015 開發的時候,默認已經安裝了編譯器,並且在保存 TypeScript 文件時會自動編譯,但在 Mac OS 下,需要手動安裝。

npm install -g typescript

添加 d3 的 bower 引用 & DefinitelyTyped

打開 bower.json, 添加如下的高亮行。

{
  "name": "sample",
  "private": true,
  "dependencies": {
    "bootstrap": "3.3.5",
    "d3": "3.5.8",
    "jquery": "2.1.4",
    "jquery-validation": "1.14.0",
    "jquery-validation-unobtrusive": "3.2.4"
  }
}

在項目所在目錄運行 bower install 下載安裝 d3js 的類庫。

截至目前,我們已經安裝好了d3的 Javascript 類庫,但是如果下想要使用 TypeScript 的高級功能, 必須對 d3 類庫中的各種對象手動的聲明類型,這是一個浩大的工程,好在已經有人幫我們搞定了,在 Github 上有 https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/d3

下載 d3.d.ts 文件,放在 wwwroot/ts-definitions 文件夾下。

注解

可以放在 wwwroot 的任何子文件夾內,但不建議放到 wwwroot/lib/d3 文件夾下,因為運行 bower install 會刪除 d3.d.ts

編寫 d3 代碼

小技巧

建議使用 Visual Studio Code 作為文本編輯器,會提供強大的智能感知。

在 wwwroot/js 文件夾下,新建文件 svgshow.ts ,擴展名為ts表示這是一個 TypeScript 文件。 部分內容如下,完整文件請前往 這里

///<reference path="../ts-definitions/d3/d3.d.ts" />
var margin = { top: 20, right: 120, bottom: 30, left: 50 },
    width = Math.min(document.body.clientWidth, 1080) - margin.left - margin.right,
    height = 800 - margin.top - margin.bottom - 20;

var xLinear = d3.scale.linear()
    .range([0, width]);

var yLinear = d3.scale.linear()
    .range([height, 0]);

var line = d3.svg.line()
    .interpolate("basis")
    .x((d: any) => xLinear(d.x))
    .y((d: any) => yLinear(d.y));

第一行,以 // 開頭,對於 JavaScript 來說是注釋,但對於 TypeScript 來說,指明了引用的類型的定義文件。

使用 tsc wwwroot/js/svgshow.ts 命令進行編譯,會在相同目錄下生成 svgshow.js 文件,部分內容如下:

///<reference path="../ts-definitions/d3/d3.d.ts" />
var margin = { top: 20, right: 120, bottom: 30, left: 50 }, width = Math.min(document.body.clientWidth, 1080) - margin.left - margin.right, height = 800 - margin.top - margin.bottom - 20;
var xLinear = d3.scale.linear()
    .range([0, width]);
var yLinear = d3.scale.linear()
    .range([height, 0]);
var line = d3.svg.line()
    .interpolate("basis")
    .x(function (d) { return xLinear(d.x); })
    .y(function (d) { return yLinear(d.y); });

可以看到 Typecript 中的 Lambda 表達式被編譯為 JavaScript 的匿名函數了。

注解

如果你更新了 .ts 文件,記得使用 tsc 進行編譯。

你可以使用 .vsocde/tasks.json 文件設置當按下 Command+Shift+B 后,自動調用 tsc 編譯。

修改頁面內容

接下來,為了能在頁面中看到這段代碼的效果,我們修改 Views/Home/Index.cshtml 文件為以下內容:

@{
    ViewData["Title"] = "Home Page";
}
@section scripts{
    <style>
        body {
            font: 10px sans-serif;
        }
        .axis path,
        .axis line {
            fill: none;
            stroke: #000;
            shape-rendering: crispEdges;
        }
        .x.axis path {
            display: none;
        }
        .line {
            fill: none;
            stroke: steelblue;
            stroke-width: 1.5px;
        }
    </style>
    <script src="~/lib/d3/d3.js"></script>
    <script src="~/js/svgshow.js"></script>
}
<div id="svgdiv"></div>

注解

為了讓瀏覽器能看懂腳本,必須引用 JavaScript 版而不是 TypeScript 版。

查看頁面

運行命令 dnx web , 打開瀏覽器訪問: http://localhost:5000

https://qinblog.blob.core.windows.net/images/aspnet5-using-typescript-on-mac-os-result.png

提示

由於JavaScript 需要加載數據,請把 這個csv文件 放到 wwwroot 目錄中。

聲明 知識共享許可協議

在 Mac OS 上使用 TypeScript 編寫 ASP.NET Core 1.0 應用勤奮的小孩 創作,采用 知識共享 署名-相同方式共享 4.0 國際 許可協議進行許可。
本許可協議授權之外的使用權限可以從 http://space.cnblogs.com/msg/send/qin-nz 處獲得。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM