W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
SJS 是小程序一套自定義腳本語言,可以在 SWAN 中使用其輔助構(gòu)建頁面結(jié)構(gòu)。
SJS 代碼可以編寫在swan文件中的 <import-sjs> 標(biāo)簽內(nèi),或以 sjs 為后綴名的文件內(nèi),然后在 SWAN 模板中進(jìn)行引用。
SJS 自小程序基礎(chǔ)庫版本3.105.17 、開發(fā)者工具正式版2.13.1開始支持。
低版本需要做兼容處理,在邏輯層可以使用 swan.canIUse('sjs') 判斷基礎(chǔ)庫是否支持 SJS 能力。其它兼容方式請參考 兼容性處理
每一個(gè) sjs 文件和 <import-sjs> 標(biāo)簽都是一個(gè)單獨(dú)的模塊。
每個(gè)模塊都有自己獨(dú)立的作用域。即在一個(gè)模塊里面定義的變量與函數(shù),默認(rèn)為私有的,對其他模塊不可見。
一個(gè)模塊要想對外暴露其內(nèi)部的私有變量與函數(shù),可以通過 export 或者 module.exports 實(shí)現(xiàn),使用 import 或者 require 引用。
在小程序項(xiàng)目中創(chuàng)建以 sjs 為后綴的文件,然后可以在其中編寫 sjs 腳本。
下述例子在 /pages/utils.sjs 的文件里面編寫了sjs代碼。該 .sjs 文件可以被其他的 .sjs 文件 或 SWAN 中的 <import-sjs> 標(biāo)簽引用。
代碼示例
在開發(fā)者工具中打開// pages/utils.sjs中編寫SJS邏輯
const bar = function(name) {
return 'swan-' + name;
}
const foo = 'hello swan';
export default {
bar: bar,
foo: foo
};
// 或者使用CMD的形式導(dǎo)出
// module.exports = {
// bar: bar,
// foo: foo
// };
<!-- 在 pages/index/index 頁面中 -->
<!-- 引用SJS -->
<import-sjs src="../utils.sjs" module="utils" />
<!-- 使用SJS -->
<view class="container">{{utils.bar(name)}}</view>
<view>{{utils.foo}}</view>
swan-sjs
hello swan
import-sjs 標(biāo)簽有兩個(gè)作用,一個(gè)是通過 src 屬性引用其它 sjs 模塊,此時(shí)標(biāo)簽可以為自閉和標(biāo)簽;另一個(gè)是使用其容納 sjs 代碼。
1.引用 sjs 文件
相關(guān)屬性
屬性名 | 類型 | 必填 | 說明 |
---|---|---|---|
module | String | 是 | 當(dāng)前<import-sjs> 標(biāo)簽的模塊名。必填字段。 |
src | String | 否 | 引用.sjs 文件的路徑,僅當(dāng)本標(biāo)簽為單閉合標(biāo)簽或標(biāo)簽的內(nèi)容為空時(shí)有效; 如果當(dāng)做 sjs 代碼容器標(biāo)簽,則不必填寫。 |
module 屬性
module 屬性是當(dāng)前 <import-sjs> 標(biāo)簽的模塊名。在單個(gè) swan 文件內(nèi),建議其值唯一。有重復(fù)模塊名則按照先后順序覆蓋(后者覆蓋前者)。不同文件之間的sjs模塊名不會相互覆蓋。
module 屬性值的命名必須符合下面兩個(gè)規(guī)則:
src 屬性
src 屬性可以用來引用其他的sjs文件模塊。
引用的時(shí)候,要注意如下幾點(diǎn):
代碼示例
在開發(fā)者工具中打開<import-sjs src="./../tools.sjs" module="logic"></import-sjs>
// pages/utils.sjs中編寫SJS邏輯
var foo = "hello world";
var bar = function (d) {
return d;
}
module.exports = {
FOO: foo,
bar: bar,
};
module.exports.msg = "some msg";
var tools = require("utils.sjs");
console.log(tools.FOO);
console.log(tools.bar("tools.sjs"));
console.log(tools.msg);
hello world
tools.sjs
some msg
2.作為 SJS 代碼容器
import-sjs 標(biāo)簽除了引用其它 sjs 模塊,還可直接作為 SJS 代碼的容器,使用 module 制定該模塊名稱,用法與上等同。
代碼示例
在開發(fā)者工具中打開<!-- 定義SJS -->
<import-sjs module="utils">
const bar = function(name) {
return 'swan-' + name;
}
const foo = 'hello swan';
export default {
bar: bar,
foo: foo
};
</import-sjs>
<!-- 使用SJS -->
<view class="container">{{utils.bar(name)}}</view>
<view>{{utils.foo}}</view>
swan-sjs
hello swan
sjs 實(shí)際應(yīng)用代碼示例
在開發(fā)者工具中打開注意
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: