{{view 視圖層}}微信小程序

微信小程序 view 視圖層//自學

  1.數據綁定

數據綁定WXML中的動態數據均來自對應Page的data。
簡單綁定數據綁定使用"Mustache"語法(雙大括號)將變量包起來,可以作用于:
內容<view> {{ message }} </view>Page({data: {message: 'Hello MINA!'}
})組件屬性(需要在雙引號之內)<view id="item-{{id}}"> </view>Page({data: {id: 0}
})控制屬性(需要在雙引號之內)<view wx:if="{{condition}}"> </view>Page({data: {condition: true}
})關鍵字(需要在雙引號之內)true:boolean 類型的 true,代表真值。false: boolean 類型的 false,代表假值。<checkbox checked="{{false}}"> </checkbox>特別注意:不要直接寫 checked="false",其計算結果是一個字符串,轉成 boolean 類型后代表真值。運算可以在{{}}內進行簡單的運算,支持的有如下幾種方式:
三元運算<view hidden="{{flag ? true : false}}"> Hidden </view>算數運算<view> {{a + b}} + {{c}} + d </view>Page({data: {a: 1,b: 2,c: 3}
})view中的內容為3 + 3 + d
邏輯判斷<view wx:if="{{length > 5}}"> </view>字符串運算<view>{{"hello" + name}}</view>Page({data:{name:"MINA"}
})數據路徑運算<view>{{object.key}} {{array[0]}}</view>Page({data: {object: {key: 'Hello '},array: ['MINA']}
})組合也可以在Mustache內直接進行組合,構成新的對象或者數組
數組<view wx:for-items="{{[zero, 1, 2, 3, 4]}}"> {{item}} </view>Page({data: {zero: 0}
})最終組合成數組[0, 1, 2, 3, 4]
對象<template is="objectCombine" data="{{for: a, bar: b}}"></template>Page({data: {a: 1,b: 2}
})最終組合成的對象是{for: 1, bar: 2}也可以用擴展運算符...來將一個對象展開<template is="objectCombine" data="{{...obj1, ...obj2, e: 5}}"></template>Page({data: {obj1: {a: 1,b: 2},obj2: {c: 3,d: 4}}
})最終組合成的對象是{a: 1, b: 2, c: 3, d: 4, e: 5}如果對象的key和value相同,也可以間接地表達<template is="objectCombine" data="{{foo, bar}}"></template>Page({data: {foo: 'my-foo',bar: 'my-bar'}
})最終組合成的對象是{foo: 'my-foo', bar:'my-bar'}注意:上述方式可以隨意組合,但是如有存在變量名相同的情況,后邊的會覆蓋前面,如<template is="objectCombine" data="{{...obj1, ...obj2, a, c: 6}}"></template>Page({data: {obj1: {a: 1,b: 2},obj2: {b: 3,c: 4},a: 5}
})最終組合成的對象是{a: 5, b: 3, c: 6}

?

?

?

  2.條件渲染

wx:if

在MINA中,我們用wx:if="{{condition}}"來判斷是否需要渲染該代碼塊:

<view wx:if="{{condition}}"> True </view>

也可以用wx:elifwx:else來添加一個else塊:

<view wx:if="{{length > 5}}"> 1 </view> <view wx:elif="{{length > 2}}"> 2 </view> <view wx:else> 3 </view>

block wx:if

因為wx:if 是一個控制屬性,需要將它添加到一個標簽上。但是如果我們想一次性判斷多個組件標簽,我們可以使用一個<block/>標簽將多個組件包裝起來,并在上邊使用wx:if控制屬性。

<block wx:if="{{true}}"> <view> view1 </view> <view> view2 </view> </block>

注意: <block/>并不是一個組件,它僅僅是一個包裝元素,不會在頁面中做任何渲染,只接受控制屬性。

wx:if vs hidden

因為wx:if之中的模板也可能包含數據綁定,所有當wx:if的條件值切換時,MINA有一個局部渲染的過程,因為它會確保條件塊在切換時銷毀或重新渲染。

同時wx:if也是惰性的,如果在初始渲染條件為false,MINA什么也不做,在條件第一次變成真的時候才開始局部渲染。

相比之下,hidden就簡單的多,組件始終會被渲染,只是簡單的控制顯示與隱藏。

一般來說,wx:if有更高的切換消耗而hidden有更高的初始渲染消耗。因此,如果需要頻繁切換的情景下,用hidden更好,如果在運行時條件不大可能改變則wx:if較好。


?

?  3.列表渲染,類似于TP的volist for循環

?

默認下:使用wx:for="{{變量名}}"嵌套到標簽內,循環;
默認index為數組的key,item為value值;可以通過wx:for-index="i"更改為i,wx:for-item="vo"更改為vo值;


在組件上使用wx:for控制屬性綁定一個數組,即可使用數組中各項的數據重復渲染該組件。默認數組的當前項的下標變量名默認為index,數組當前項的變量名默認為item<view wx:for="{{items}}">{{index}}: {{item.message}} </view>Page({items: [{message: 'foo',},{message: 'bar'}] })使用wx:for-item可以指定數組當前元素的變量名使用wx:for-index可以指定數組當前下標的變量名:<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">{{idx}}: {{itemName.message}} </view>wx:for也可以嵌套,下邊是一個九九乘法表<view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="i"><view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="j"><view wx:if="{{i <= j}}">{{i}} * {{j}} = {{i * j}}</view></view> </view>block wx:for類似block wx:if,也可以將wx:for用在<block/>標簽上,以渲染一個包含多節點的結構塊。例如:<block wx:for="{{[1, 2, 3]}}"><view> {{index}}: </view><view> {{item}} </view> </block>wx:key如果列表中項目的位置會動態改變或者有新的項目添加到列表中,并且希望列表中的項目保持自己的特征和狀態(如 <input/> 中的輸入內容,<switch/> 的選中狀態),需要使用 wx:key 來指定列表中項目的唯一的標識符。wx:key 的值以兩種形式提供字符串,代表在 for 循環的 array 中 item 的某個 property,該 property 的值需要是列表中唯一的字符串或數字,且不能動態改變。保留關鍵字 *this 代表在 for 循環中的 item 本身,這種表示需要 item 本身是一個唯一的字符串或者數字,如:當數據改變觸發渲染層重新渲染的時候,會校正帶有 key 的組件,框架會確保他們被重新排序,而不是重新創建,以確保使組件保持自身的狀態,并且提高列表渲染時的效率。如不提供 wx:key,會報一個 warning, 如果明確知道該列表是靜態,或者不必關注其順序,可以選擇忽略。示例代碼:<switch wx:for="{{objectArray}}" wx:key="unique" style="display: block;"> {{item.id}} </switch> <button bindtap="switch"> Switch </button> <button bindtap="addToFront"> Add to the front </button><switch wx:for="{{numberArray}}" wx:key="*this" style="display: block;"> {{item}} </switch> <button bindtap="addNumberToFront"> Add to the front </button>Page({data: {objectArray: [{id: 5, unique: 'unique_5'},{id: 4, unique: 'unique_4'},{id: 3, unique: 'unique_3'},{id: 2, unique: 'unique_2'},{id: 1, unique: 'unique_1'},{id: 0, unique: 'unique_0'},],numberArray: [1, 2, 3, 4]},switch: function(e) {const length = this.data.objectArray.lengthfor (let i = 0; i < length; ++i) {const x = Math.floor(Math.random() * length)const y = Math.floor(Math.random() * length)const temp = this.data.objectArray[x]this.data.objectArray[x] = this.data.objectArray[y]this.data.objectArray[y] = temp}this.setData({objectArray: this.data.objectArray})},addToFront: function(e) {const length = this.data.objectArray.lengththis.data.objectArray = [{id: length, unique: 'unique_' + length}].concat(this.data.objectArray)this.setData({objectArray: this.data.objectArray})},addNumberToFront: function(e){this.data.numberArray = [ this.data.numberArray.length + 1 ].concat(this.data.numberArray)this.setData({numberArray: this.data.numberArray})} })

  4. 微信小程序 模板(template)

模板WXML提供模板(template),可以在模板中定義代碼片段,然后在不同的地方調用。
定義模板使用name屬性,作為模板的名字。然后在<template/>內定義代碼片段,如:<!--index: intmsg: stringtime: string
-->
<template name="msgItem"><view><text> {{index}}: {{msg}} </text><text> Time: {{time}} </text></view>
</template>使用模板使用is屬性,聲明需要的使用的模板,然后將模板所需要的data傳入,如:<template is="msgItem" data="{{...item}}"/>Page({data: {item: {index: 0,msg: 'this is a template',time: '2016-09-15'}}
})is屬性可以使用Mustache語法,在運行時來決定具體需要渲染哪個模板:<template name="odd"><view> odd </view>
</template>
<template name="even"><view> even </view>
</template><block wx:for="{{[1, 2, 3, 4, 5]}}"><template is="{{item % 2 == 0 ? 'even' : 'odd'}}"/>
</block>

 4. 微信小程序 事件

?

  • 事件是視圖層到邏輯層的通訊方式。
  • 事件可以將用戶的行為反饋到邏輯層進行處理。
  • 事件可以綁定在組件上,當達到觸發事件,就會執行邏輯層中對應的事件處理函數。
  • 事件對象可以攜帶額外信息,如id, dataset, touches。
  •   1 事件的使用方式
      2 
      3     在組件中綁定一個事件處理函數。 
      4 
      5 如bindtap,當用戶點擊該組件的時候會在該頁面對應的Page中找到相應的事件處理函數。
      6 
      7 <view id="tapTest" data-hi="MINA" bindtap="tapName"> Click me! </view>
      8 
      9     在相應的Page定義中寫上相應的事件處理函數,參數是event。 
     10 
     11 Page({
     12   tapName: function(event) {
     13     console.log(event)
     14   }
     15 })
     16 
     17     可以看到log出來的信息大致如下
     18 
     19     {
     20     "type": "tap",
     21     "timeStamp": 1252,
     22     "target": {
     23       "id": "tapTest",
     24       "offsetLeft": 0,
     25       "offsetTop": 0,
     26       "dataset": {
     27        "hi": "MINA"
     28       }
     29     },
     30     "currentTarget": {
     31       "id": "tapTest",
     32       "offsetLeft": 0,
     33       "offsetTop": 0,
     34       "dataset": {
     35         "hi": "MINA"
     36       }
     37     },
     38     "touches": [{
     39       "pageX": 30,
     40       "pageY": 12,
     41       "clientX": 30,
     42       "clientY": 12,
     43       "screenX": 112,
     44       "screenY": 151
     45     }],
     46     "detail": {
     47       "x": 30,
     48       "y": 12
     49     }
     50     }
     51 
     52 事件詳解
     53 事件分類
     54 
     55 事件分為冒泡事件和非冒泡事件
     56 
     57     冒泡事件:當一個組件上的事件被觸發后,該事件會向父節點傳遞。
     58     非冒泡事件:當一個組件上的事件被觸發后,該事件不會向父節點傳遞。 
     59 
     60 WXML的冒泡事件列表:
     61 類型     觸發條件
     62 touchstart     手指觸摸
     63 touchmove     手指觸摸后移動
     64 touchcancel     手指觸摸動作被打斷,如來電提醒,彈窗
     65 touchend     手指觸摸動作結束
     66 tap     手指觸摸后離開
     67 longtap     手指觸摸后,超過350ms再離開
     68 
     69 注:除上表之外的其他組件自定義事件都是非冒泡事件,如<form/>的submit事件,<input/>的input事件,<scroll-view/>的scroll事件,(詳見各個組件)
     70 事件綁定
     71 
     72 事件綁定的寫法同組件的屬性,以key、value的形式。
     73 
     74     key以bind或catch開頭,然后跟上事件的類型,如bindtap, catchtouchstart
     75     value是一個字符串,需要在對應的Page中定義同名的函數。不然當觸發事件的時候會報錯。 
     76 
     77 bind事件綁定不會阻止冒泡事件向上冒泡,catch事件綁定可以阻止冒泡事件向上冒泡。
     78 
     79 如在下邊這個例子中,點擊inner view會先后觸發handleTap1和handleTap2(因為tap事件會冒泡到middle view,而middle view阻止了tap事件冒泡,不再向父節點傳遞),點擊middle view會觸發handleTap2,點擊outter view會觸發handleTap1。
     80 
     81 <view id="outter" bindtap="handleTap1">
     82   outer view
     83   <view id="middle" catchtap="handleTap2">
     84     middle view
     85     <view id="inner" bindtap="handleTap3">
     86       inner view
     87     </view>
     88   </view>
     89 </view>
     90 
     91 事件對象
     92 
     93 如無特殊說明,當組件觸發事件時,邏輯層綁定該事件的處理函數會收到一個事件對象。
     94 
     95 事件對象的屬性列表:
     96 屬性     類型     說明
     97 type     String     事件類型
     98 timeStamp     Integer     事件生成時的時間戳
     99 target     Object     觸發事件的組件的一些屬性值集合
    100 currentTarget     Object     當前組件的一些屬性值集合
    101 touches     Array     觸摸事件,觸摸點信息的數組
    102 detail     Object     額外的信息
    103 CustomEvent 自定義事件對象屬性列表(繼承 BaseEvent):
    104 屬性    類型    說明
    105 detail    Object    額外的信息
    106 
    107 TouchEvent 觸摸事件對象屬性列表(繼承 BaseEvent):
    108 屬性    類型    說明
    109 touches    Array    觸摸事件,當前停留在屏幕中的觸摸點信息的數組
    110 changedTouches    Array    觸摸事件,當前變化的觸摸點信息的數組
    111 
    112 特殊事件: <canvas/> 中的觸摸事件不可冒泡,所以沒有 currentTarget。
    113 
    114 type
    115 通用事件類型
    116 timeStamp
    117 
    118 該頁面打開到觸發事件所經過的毫秒數。
    119 target
    120 
    121 觸發事件的源組件。
    122 屬性     說明
    123 id     事件源組件的id
    124 dataset     事件源組件上由data-開頭的自定義屬性組成的集合
    125 offsetLeft, offsetTop     事件源組件的坐標系統中偏移量
    126 currentTarget
    127 
    128 事件綁定的當前組件。
    129 屬性    類型    說明
    130 id    String    當前組件的id
    131 tagName    String    當前組件的類型
    132 dataset    Object    當前組件上由data-開頭的自定義屬性組成的集合
    133 
    134 說明: target 和 currentTarget 可以參考上例中,點擊 inner view 時,handleTap3 收到的事件對象 target 和 currentTarget 都是 inner,而 handleTap2 收到的事件對象 target 就是 inner,currentTarget 就是 middle。
    135 dataset
    136 
    137 在組件中可以定義數據,這些數據將會通過事件傳遞給 SERVICE。 書寫方式: 以data-開頭,多個單詞由連字符-鏈接,不能有大寫(大寫會自動轉成小寫)如data-element-type,最終在 event.target.dataset 中會將連字符轉成駝峰elementType。
    138 
    139 示例:
    140 
    141 <view data-alpha-beta="1" data-alphaBeta="2" bindtap="bindViewTap"> DataSet Test </view>
    142 
    143 Page({
    144   bindViewTap:function(event){
    145     event.target.dataset.alphaBeta === 1 // - 會轉為駝峰寫法
    146     event.target.dataset.alphabeta === 2 // 大寫會轉為小寫
    147   }
    148 })
    149 
    150 touches
    151 
    152 touches 是一個數組,每個元素為一個 Touch 對象(canvas 觸摸事件中攜帶的 touches 是 CanvasTouch 數組)。 表示當前停留在屏幕上的觸摸點。
    153 Touch 對象
    154 屬性    類型    說明
    155 identifier    Number    觸摸點的標識符
    156 pageX, pageY    Number    距離文檔左上角的距離,文檔的左上角為原點 ,橫向為X軸,縱向為Y軸
    157 clientX, clientY    Number    距離頁面可顯示區域(屏幕除去導航條)左上角距離,橫向為X軸,縱向為Y軸
    158 CanvasTouch 對象
    159 屬性    類型    說明    特殊說明
    160 identifier    Number    觸摸點的標識符     
    161 x, y    Number    距離 Canvas 左上角的距離,Canvas 的左上角為原點 ,橫向為X軸,縱向為Y軸     
    162 changedTouches
    163 
    164 changedTouches 數據格式同 touches。 表示有變化的觸摸點,如從無變有(touchstart),位置變化(touchmove),從有變無(touchend、touchcancel)。
    165 detail
    166 
    167 自定義事件所攜帶的數據,如表單組件的提交事件會攜帶用戶的輸入,媒體的錯誤事件會攜帶錯誤信息,詳見組件定義中各個事件的定義。

     5. 微信小程序 引用

?

引用兩種方式:
一、import
二、inclode
importimport可以在該文件中使用目標文件定義的template,如:在item.wxml中定義了一個叫item的template:
<!-- item.wxml --> <template name="item"><text>{{text}}</text> </template>在index.wxml中引用了item.wxml,就可以使用item模板:<import src="item.wxml"/> <template is="item" data="{{text: 'forbar'}}"/>import的作用域import有作用域的概念,即只會import目標文件中定義的template,而不會import目標文件import的template。如:C import B,B import A,在C中可以使用B定義的template,在B中可以使用A定義的template,但是C不能使用A定義的template。<!-- A.wxml --> <template name="A"><text> A template </text> </template><!-- B.wxml --> <import src="A.wxml"/> <template name="B"><text> B template </text> </template><!-- C.wxml --> <import src="B.wxml"/> <template is="A"/> <!-- Error! Can not use tempalte when not import A. --> <template is="B"/>includeinclude可以將目標文件除了<template/>的整個代碼引入,相當于是拷貝到include位置,如:<!-- index.wxml --> <include src="header.wxml"/> <view> body </view> <include src="footer.wxml"/><!-- header.wxml --> <view> header </view><!-- footer.wxml --> <view> footer </view>

?

轉載于:https://www.cnblogs.com/demolzhi/p/6164078.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253785.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253785.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253785.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CMOS圖像傳感器——概述

一、概述 圖像傳感器是把光學圖像信息轉換成電信號的器件。圖像傳感器是隨著電視技術在20世紀30年代發展起來的,早期圖像傳感器技術的最重要貢獻在于建立了掃描(Scan)的概念,用掃描的方法把二維空間平面上的光電信息離散成行(Line)和幀(Frame),然后按空間順序讀出形成…

nand flash壞塊管理OOB,BBT,ECC

0.NAND的操作管理方式 NAND FLASH的管理方式&#xff1a;以三星FLASH為例&#xff0c;一片Nand flash為一個設備(device)&#xff0c;1 (Device) xxxx (Blocks)&#xff0c;1 (Block) xxxx (Pages)&#xff0c;1(Page) 528 (Bytes) 數據塊大小(512Bytes) OOB 塊大小(16Byte…

小白學git2

你已經在本地創建了一個Git倉庫后&#xff0c;又想在GitHub創建一個Git倉庫&#xff0c;并且讓這兩個倉庫進行遠程同步&#xff0c;這樣&#xff0c;GitHub上的倉庫既可以作為備份&#xff0c;又可以讓其他人通過該倉庫來協作&#xff0c;真是一舉多得。 首先&#xff0c;登陸G…

[LeetCode_5] Longest Palindromic Substring

LeetCode: 5. Longest Palindromic Substring class Solution { public: //動態規劃算法string longestPalindrome(string s) {int n s.length();int longestBegin 0;int maxLen 1;bool table[1000][1000] {false};for (int i 0; i < n; i) {table[i][i] true;}//對角…

冒泡排序java

一、最簡單粗暴的排序 思想為&#xff1a;讓每一個關鍵字都和它后邊的每一個關鍵字比較&#xff0c; 如果大則交換&#xff0c;這樣第一個位置的關鍵字在一次循環后一定變為最小值。 1 package demo01;2 3 class BubbleSort01 {4 public static void main(String[] args) {…

CMOS圖像傳感器——工作原理

一、像素陣列結構 一般像素陣列是由水平方向的行( Row ) 和垂直方向的列(Column)正交排列構成的。像素排列的最基本設計原則是:攝像器件像素排列的坐標,必須在顯示的時候能夠準確地還原在圖像原來的相對位置上。在大多數情況下,每個像素中心線在行的方向和列的方向,即…

追尋終極數據庫 - 事務/分析混合處理系統的交付挑戰 (3)

挑戰&#xff1a;支持多個存儲引擎 以下內容并不是新發現&#xff1a;行優化存儲適用于OLTP和運營工作負載&#xff0c;而列存儲適用于BI和分析工作負載。頻繁寫入的工作負載適用于行式存儲。對Hadoop而言&#xff0c;Hbase適合低延遲工作負載&#xff0c;列式ORC文件或Parquet…

hibernate快速入門

第一步:下載Hibernate的開發包:  http://sourceforge.net/projects/hibernate/files/hibernate3 第二步:Hibernate框架目錄結構:  documentation :Hibernate文檔  lib :Hibernate開發jar包    bytecode :操作字節碼jar包.    jpa :Hibernate的實現jpa規范.   …

U-boot給kernel傳參數和kernel讀取參數—struct tag

U-boot 會給 Linux Kernel 傳遞很多參數&#xff0c;如&#xff1a;串口&#xff0c; RAM &#xff0c; videofb 等。 而 Linux kernel 也會讀取和處理這些參數。兩者之間 通過 struct tag 來傳遞參數。 U-boot 把要傳遞給 kernel 的東西保存在 struct tag 數據結構中&#xf…

異步FIFO設計(Verilog)

FIFO&#xff08;First In First Out&#xff09;是異步數據傳輸時經常使用的存儲器。該存儲器的特點是數據先進先出&#xff08;后進后出&#xff09;。其實&#xff0c;多位寬數據的異步傳輸問題&#xff0c;無論是從快時鐘到慢時鐘域&#xff0c;還是從慢時鐘到快時鐘域&…

python中RabbitMQ的使用(路由鍵模糊匹配)

路由鍵模糊匹配 使用正則表達式進行匹配。其中“#”表示所有、全部的意思&#xff1b;“*”只匹配到一個詞。 匹配規則&#xff1a; 路由鍵&#xff1a;routings [ happy.work, happy.life , happy.work.teacher, sad.work, sad.life, sad.work.teacher ] "#"&am…

數據倉庫事實表分類[轉]

1&#xff09;在數據倉庫領域有一個概念叫Transaction fact table&#xff0c;中文一般翻譯為“事務事實表”。 事務事實表是維度建模的數據倉庫中三種基本類型事實表中的一種&#xff0c;另外兩種分別是周期快照事實表和累積快照事實表。 事務事實表與周期快照事實表、累積快…

嵌入式系統文件系統比較 jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs

Linux支持多種文件系統&#xff0c;包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等&#xff0c;為了對各類文件系統 進行統一管理&#xff0c;Linux引入了虛擬文件系統VFS(Virtual File System)&#xff0c;為各類文件系統提供一個統一的操作界面和應用編程接口。 …

Codeforces Beta Round #17 C. Balance DP

C. Balance題目鏈接 http://codeforces.com/contest/17/problem/C 題面 Nick likes strings very much, he likes to rotate them, sort them, rearrange characters within a string... Once he wrote a random string of characters a, b, c on a piece of paper and began t…

時鐘切換處理(Verilog)

隨著各種應用場景的限制&#xff0c;芯片在運行時往往需要在不同的應用下切換不同的時鐘源&#xff0c;例如低功耗和高性能模式就分別需要低頻率和高頻率的時鐘。兩個時鐘源有可能是同源且同步的&#xff0c;也有可能是不相關的。直接使用選擇邏輯進行時鐘切換大概率會導致分頻…

SSH整合中,使用父action重構子類action類.(在父類中獲取子類中的泛型對象)

import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type;import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven;/*** 文件名 : BaseAction.java* 提取SSH中的action類* 由于SSH的action中采用模型驅動的方法,使用泛…

用BusyBox制作Linux根文件系統

STEP 1&#xff1a;構建目錄結構 創建根文件系統目錄&#xff0c;主要包括以下目錄 /dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin /sys #mkdir /home/rootfs #cd /home/rootfs #mkdir dev etc lib usr var proc tmp home roo…

Angular Elements 組件在非angular 頁面中使用的DEMO

2019獨角獸企業重金招聘Python工程師標準>>> 一、Angular Elements 介紹 Angular Elements 是伴隨Angular6.0一起推出的新技術。它借助Chrome瀏覽器的ShadowDom API&#xff0c;實現一種自定義組件。 這種組件可以用Angular普通組件的開發技術進行編寫&#xff0c;…

(轉) android里,addContentView()動態增加view控件,并實現控件的頂部,中間,底部布局...

http://blog.csdn.net/bfboys/article/details/52563089轉載于:https://www.cnblogs.com/zhangminghan/p/6182909.html

verilog仿真——$test$plusargs 和 $value$plusargs

VERILOG的參數可以用define和parameter的方式定義&#xff0c;這種方法要求我們在編譯前將變量必須定義好&#xff0c;編譯完成之后再也不能修改&#xff1b; 然而&#xff0c;有時候我們在進行仿真時&#xff0c;需要從外部傳遞參數&#xff0c;這個要求怎么滿足呢&#xff1…