成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

zhilizhili-ui 2016始動 開始做個樣例站吧 (一)

hzc / 2546人閱讀

摘要:使用,開發(fā)者用來表示異步數(shù)據(jù)流,通過操作符來查詢異步數(shù)據(jù)量,并使用來參數(shù)化異步數(shù)據(jù)流中的并發(fā)。在中,你可以表述多個異步數(shù)據(jù)流,并且使用對象訂閱事件流。因為序列是數(shù)據(jù)流,你可以使用由擴展方法實現(xiàn)的標準查詢操作符來查詢它們。

對 我又挖坑了 不過其實也不算挖坑 因為ui構建中就會有填坑的文章 之前一直在寫《編寫大型web頁面 結合現(xiàn)有前端形勢思考未來前端》這是一篇巨難寫的文章 估計要到年中才能寫好了 寫作的過程中 發(fā)生了國內前端大撕逼 2015的尾聲大戰(zhàn) 是否可以宣告前端是否開始新的時代 2016年 國內前端可能還會依舊艱難 國外前端也不是很好 微軟正式不再支持ie11以下的瀏覽器 估計今年內 國外框架就要完全提高至ie10兼容水平了
zhilizhili-ui
自己從有這個想法到現(xiàn)在zhilizhili-ui發(fā)展到1.24版本已經(jīng)快一年了 這一年里自己收集和編寫了sassstd scss-zhilizhili-mei 這些一直在用sass庫 sass可能不再是很新鮮的樣式預編譯語言了 的確受到一些壓力 不過自己也在積極改進樣式構建的流程 自己加入了postcss支持 2016年 打算開始和css4無縫對接
寫個樣例站吧

我選用前端框架angular2 后端laravel

本文不會特地放出demo

要想找到源碼 請到我的github項目上

tde.blade.php






    
    
    
    Mobile Component

    
    
    
    
    


    
    

    
    
    
    


    Loading...

說到angular2 大家可能對她還不是很感興趣 但是在瀏覽器依舊要面對ie的時代 這個時代可能還要5年 angular2的確是給了一個大型應用的解決方案 的確 還是臟檢查 不過使用的是worker zone.js提供了支持

2014年的ngconf大會 angular團隊介紹了zone.js zone 就像java thread ok 好吧用進程模擬線程 也是可以的 dart有zones

zone is a execution context

通常我們寫異步js

a();
setTimeout(b, 0);
setTimeout(c, 0);    
d();

她的執(zhí)行順序

a
d
b
c

如果我們改改

start();
a();
setTimeout(b, 0);
setTimeout(c, 0);    
d();
stop();

b c是不會被影響的

zone希望去使代碼可預測

zone.run(function() {
    a();
    setTimeout(b, 0);
    setTimeout(c, 0);    
    d();    
));

function onZoneEnter() {
}

function onZoneLeave() {
}

tde.ts

import {AppComponent}     from "./tde/app.component";
import {bootstrap}        from "angular2/platform/browser";
import {provide}          from "angular2/core";
import {
    APP_BASE_HREF,
    ROUTER_PROVIDERS
} from "angular2/router";
bootstrap(AppComponent, [
    ROUTER_PROVIDERS,
    provide(APP_BASE_HREF, {useValue: "/wex/mtc"})
]);

zone可以捕捉甚至異步操作 用過angular2的都知道她的debug非常好 就是使用的是zone.js
angular之前的$scope.apply沒有了 沒了 不要擔心了

rxjs

響應式編程 rxjava很牛對吧 這個也不錯

RxJS 是使用可觀察序列和 LINQ 風格查詢操作符來編寫異步和基于事件程序的類庫。 使用 RxJS, 開發(fā)者用 Observables 來 表示 異步數(shù)據(jù)流,通過 LINQ 操作符來 查詢 異步數(shù)據(jù)量,并使用 Schedules 來參數(shù)化異步數(shù)據(jù)流中的并發(fā)。 簡單地講, Rx = Observables + LINQ + Schedulers。

在 RxJS 中,你可以表述多個異步數(shù)據(jù)流,并且使用 Observer 對象訂閱事件流。 Observable 對象會在事件發(fā)生時通知已訂閱的 Observer。

因為 Observable 序列是數(shù)據(jù)流,你可以使用由 Observable 擴展方法實現(xiàn)的標準查詢操作符 來查詢它們。這樣你可以通過這些查詢操作符很容易地在多個事件上進行過濾、投射、聚合、 組合和執(zhí)行基于時間的操作。除此之外還有很多其他反應式流特定的操作符使得可以書寫強大的查詢。 取消、異常和同步都可以通過由 Rx 提供的擴展方法優(yōu)雅地處理。

由 Rx 實現(xiàn)的 Push 模型表現(xiàn)為 Observable/Observer 的觀察者模式。 Observable 會自動在任何狀態(tài)改變時通知所有的 Observers。 要通過訂閱注冊一個關注,你要使用 Observable 上的 subscribe 方法, 它接收一個 Observer 并返回一個 Disposable 對象。 它讓你能夠跟蹤你的訂閱并能夠取消該訂閱。 本質上你可以將可觀察序列看做一個常規(guī)的集合。

開始最初的頁面設計

大概就是desktop端需要一個框架樣的東西 pad端 mobile端 就隱藏兩邊邊欄

未來組團開發(fā)的時候 很多情況樣式并非一個人開發(fā) 可能架構組會將頁面元素定下來 register-hook 然后業(yè)務實現(xiàn)組 要通過 use-hook 來開發(fā) 這樣上層設計改變 代碼也可以有效維護

tde.scss
首先我們需要一些生成media query的sass方法 這樣不錯

@import "../../../../../node_modules/sass-mediaqueries/media-queries";

@function mq($args...) {
    $media-type: "only screen";
    $media-type-key: "media-type";
    $args: keywords($args);
    $expr: "";

    @if map-has-key($args, $media-type-key) {
        $media-type: map-get($args, $media-type-key);
        $args: map-remove($args, $media-type-key);
    }

    @each $key, $value in $args {
        @if $value {
            $expr: "#{$expr} and (#{$key}: #{$value})";
        }
    }

    @return #{$media-type} #{$expr};
}

@function screen($min, $max, $orientation: false) {
    @return mq($min-width: $min, $max-width: $max, $orientation: $orientation);
}

我們需要一些全局變量保存

$custom-deivces: (
    "mobile": 320,
    "pad": 768,
    "desktop": 1280,
) !global;

$custom-deivces-media: () !global;
$custom-deivces-hook: () !global;

這樣的話 我們需要一個初始化sass實現(xiàn)的方法

@mixin initlize-media-hooks($custom-deivces) {
    $custom-deivces-indicators: map-keys($custom-deivces);
    $custom-deivces-indicatorslength: length($custom-deivces-indicators);

    @for $i from 1 through $custom-deivces-indicatorslength {
        $currentDeviceIndicator: nth($custom-deivces-indicators, $i);
        $currentDevice: map-deep-get($custom-deivces, $currentDeviceIndicator);
        $currentMedia: $currentDevice + 0px;
        $nextDeviceIndicator: if($i < $custom-deivces-indicatorslength, nth($custom-deivces-indicators, ($i + 1)), null);
        $nextDevice: if($nextDeviceIndicator !=null, map-deep-get($custom-deivces, $nextDeviceIndicator), 2881);
        $nextMedia: $nextDevice + 0px - 1;
        @include screen($currentMedia, $nextMedia) {
            $custom-deivces-media: map-deep-set($custom-deivces-media, $currentDeviceIndicator, screen($currentMedia, $nextMedia)) !global;
            $custom-deivces-hook: map-deep-set($custom-deivces-hook, $currentDeviceIndicator, "device #{$currentDeviceIndicator}") !global;
        }
    }
}

@mixin use-media-hook($device) {
    @media #{map-deep-get($custom-deivces-media, $device)} {
        @at-root {
            @content;
        }
    }
}

每個頁面可能有不同兼容情況 然后只需要自定義設備 在初始化一下

$custom-deivces: map-extend($customo-device, (...));
@include initlize-media-hooks($custom-deivces);

然后我們就可以使用自己定義好的設備查詢

@include use-media-hook("pad") {
    @include use-hook(".main-inner .layout__item.layout__item--prefix") {
        position: absolute;
        left: 0;
        top: 0;
    }
    @include use-hook(".main-inner .layout__item.layout__item--suffix") {
        position: absolute;
        right: 0;
        top: 0;
    }
}

@include use-media-hook("mobile") {
    @include use-hook(".main-inner .layout__item.layout__item--prefix") {
        position: absolute;
        left: 0;
        top: 0;
        opacity: 0;
        z-index: -1;
    }
    @include use-hook(".main-inner .layout__item.layout__item--suffix") {
        position: absolute;
        right: 0;
        top: 0;
        opacity: 0;
        z-index: -1;
    }
}

然后一個操作視頻

bilibili鏈接

happy fte

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/78379.html

相關文章

  • zhilizhili-ui 2016始動 移動端select美化

    摘要:移動端樣式不統(tǒng)一問題如何解決用不過彈出層是不可以的但是展示的地方可以就像如圖我們找個設計然后你就可以開始做了首先會導致一些不對的地方不可以單獨使用其實我們發(fā)現(xiàn)我們需要這樣一個 移動端 select 樣式不統(tǒng)一問題如何解決 用css 不過彈出層是不可以的 但是展示的地方可以 就像如圖showImg(https://segmentfault.com/img/bVrWCb); 我們找個設計s...

    dreamtecher 評論0 收藏0
  • zhilizhili-ui 2016 web app啟動界面制作

    摘要:見圖確定設計稿大小使用我的中就可以生成一個兼容數(shù)值為了加速解析最好把要解析的文本放到頁面中如果你想使用在手機端那么就要使用配套的當然不需要自己把提取出來方法已經(jīng)提取好不需要多慮版本號低于只需要支持一下然后在回調函數(shù)里就是正確的布局 content# 指代html content 就是你插入的html內容 效果圖 showImg(https://segmentfault.com/img/...

    2501207950 評論0 收藏0
  • zhilizhili-ui 2016 寫寫簡單的tabview

    摘要:每天發(fā)垃圾文我也是蠻拼的沒有有有前面所說的是什么設計設計要求點擊切換滑動切換從圖片中我們可以看出上下不定自動填充布局這個我以前講過了就不寫了如果用表述下就是這樣的很顯然我們需要一個一個 每天發(fā)垃圾文 我也是蠻拼的 web 沒有tabview android 有tabviewios 有tabcontrol web 前面所說的是什么 設計 showImg(https://segmentfa...

    JerryWangSAP 評論0 收藏0
  • Cytoscape插件開發(fā)小結

    摘要:前段時間接了一個,是給生命學院的老師開發(fā)一個的插件。如果你一定要使用的新特性,可以嘗試一下使用最新版本的插件。這可以參考這個插件的。閱讀別人開發(fā)的插件是最快捷的學習方法,當你多方求索而不得時可以考慮在的里面求助。 前段時間接了一個 parttime job,是給生命學院的老師開發(fā)一個 Cytoscape 的插件。本文做個簡單的技術總結,所有的細節(jié)都基于 Cytoscape3.3.0,閱...

    galaxy_robot 評論0 收藏0

發(fā)表評論

0條評論

hzc

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<