項目規範與文章地址html
Lib
├──page 落地頁
│ └──user 頁面模塊文件夾
│ └──login 頁面落地頁文件夾
│ └──user_login.dart => class UserLoginPage 後綴爲page爲落地頁 惟一入口
│ └──user_login_button.dart => class UserLoginButton 非公共部分頁面子組件
├──component 通用組件
│ └──Modal
│ └──alert.dart => class ModalAlertComponent
├──store 數據集中管理
│ ├──index.dart 實例化Provider export model類
│ ├──proto pb協議轉換代碼
│ ├──service pb協議 yyp協議 等等轉義成 dart方法
│ ├──model
│ │ ├──user_model.dart => class UserModel
│ │ └──index.dart => export all models
│ └──object
│ └──user_object.dart => class UserObject
├──helper 公共方法
│ └──index.dart 常規方法、通用方法、全局方法能夠用過這個入口export 避免重複引入、能夠做用經過用方法入口
├──config 配置中心
│ ├──index.dart 配置變量與切換方法
└──router 路由
└── 頁面映射配置、observe 方法導出
複製代碼
在 Dart 中標識符有三種風格:git
類,枚舉,自定義類型和參數類型,應該使用大寫駝峯,且不能使用分隔符。github
class SliderMenu { }
class HttpRequest { }
typedef bool Predicate<T>(T value);
class Foo {
const Foo([arg]);
}
@Foo(anArg)
class A { }
@Foo()
class B { }
// 若是註解類的構造函數沒有參數,能夠建立一個單獨的小寫駝峯常量。
const foo = const Foo();
@foo
class C { }
複製代碼
library peg_parser.source_scanner;
import 'file_system.dart';
import 'slider_menu.dart';
複製代碼
var item;
HttpRequest httpRequest;
void align(bool clearItems) {
// ...
}
複製代碼
const pi = 3.14;
const defaultTimeout = 1000;
final urlScheme = new RegExp('^([a-z]+):');
class Dice {
static final numberGenerator = new Random();
}
複製代碼
HttpConnectionInfo
uiHandler
IOStream
HttpRequest
Id
DB
複製代碼
各部份內按字母順序排序bash
// 在其它導入以前導入 「dart:」
import 'dart:async';
import 'dart:html';
// 在相對導入以前導入 「package:」
import 'package:bar/bar.dart';
import 'package:foo/foo.dart';
// 在其它導入前導入第三方 「package:」
import 'package:my_package/util.dart';
//
import 'util.dart';
// 在全部導入以後的單獨部分指定導出
export 'util.dart';
複製代碼
官方使用 dartfmt 格式化代碼。dom
可讀性研究代表,過長的文本不適合閱讀,由於當你看到下一行開始的時候眼睛移動的距離過大。這就是爲何新聞和雜誌使用多列的文本。async
if (isWeekDay) {
print('Bike to work!');
} else {
print('Go dancing or read a book!');
}
// 有一個例外是:if 語句沒有 else,符合條件只有一行,能夠省略大括號。
if (arg == null) return defaultValue;
複製代碼