我正在学习dojo来开发一个简单的应用程序,以供移动客户端使用。我看到一些小部件在dojox/mobile/*和dijit/form/*之间有不同的特性。例如,ComboBox from dijit具有一个属性来选择Memory存储使用(searchAttrb)的哪个字段,而来自dojox的字段没有:
https://dojotoolkit.org/reference-guide/1.10/dojox/mobile/ComboBox.html
https://dojotoolkit.org/reference-guide/1.10/dijit/form/ComboBox.html
dijit小部件吗?dojo/domReady!是什么意思。但我不确定是否也必须在嵌套需求中使用它。示例:
要求(“dojo/request/xhr”、"dojo/json“、"dojo/domReady!”)、函数(xhr、JSON) { xhr("api/dummy“、{ handleAs:"json”}).then(函数(数据){ require("dojo/store/Memory“、"dijit/form/ComboBox”、"dojo/domReady!“)、函数(内存)ComboBox) { var mystore =新内存({ data: data });var comboBox =新ComboBox({ id:"idCombo",名称:"blabla",存储: mystore,searchAttr:"field“},"idCombo").startup();};},函数(err) { console.log(err);};};这个片段提取服务器上的一个文件并创建Memory存储。然后使用字段“字段”填充ComboBox。是否需要内部dojo/domReady!?我想不是,因为只有在执行外部函数之后才能到达该代码。
dojo示例都是以不同的方式编写的。有些人在dojo之后声明所有需要的项,包括。另一些则只需要功能所需的项目,逐项功能。有什么不同吗?示例
FormControls.html?theme=Custom
将所有项一起声明,并且没有关联的函数,因此没有名称:
<script type="text/javascript" src="../../../dojo/dojo.js" data-dojo-config="async: true, parseOnLoad: true"></script>
<script type="text/javascript">
    require([
        "dojox/mobile",
        "dojox/mobile/parser",
        "dojox/mobile/compat",
        "dojox/mobile/Button",
        "dojox/mobile/CheckBox",
        "dojox/mobile/ComboBox",
        "dojox/mobile/RadioButton",
        "dojox/mobile/Slider",
        "dojox/mobile/TextBox",
        "dojox/mobile/SearchBox",
        "dojox/mobile/ExpandingTextArea",
        "dojox/mobile/ToggleButton"
    ]);在此期间:
https://dojotoolkit.org/documentation/tutorials/1.10/checkboxes/demo/CheckBox.html
require指令后面跟着一个函数:
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js" data-dojo-config="isDebug: 1, async: 1, parseOnLoad: 1"></script>
<script>                
    require(["dijit/form/CheckBox", "dojo/parser", "dojo/domReady!"], function(CheckBox, parser) {当然,它们应该有不同的含义和用例,但我不确定要理解哪一个。
发布于 2016-10-17 18:48:48
关于问题01
dojox/mobile/*提供了可用于为移动设备构建基于web的应用程序的小部件。
dojox/mobile/*中的小部件被设计成尽可能轻量级,并特别关注移动体验。
在使用dojox/mobile/*构建移动设备时,可以排除许多依赖项,因为它们对dojo的依赖性较小。
如果您的目标低端设备使用dijit更多的套件桌面应用程序,我建议使用这些小部件。
关于问题02
dojo/domReady!在内部require中并不是必需的。
关于问题03:
在dojo中,您可以通过两种方式声明小部件,即以声明方式或以编程方式声明。
通过声明性方法,您可以在HTML中启动小部件,并使用dojo/parser连接框架提供的JavaScript行为。
请注意data-dojo-type中的数据属性
示例:
<button type="button" id="myButton" data-dojo-type="dijit/form/Button">
    <span>Click Me!</span>
</button>
<script type="text/javascript" src="lib/dojo/dojo.js"
    data-dojo-config="async: true"></script>
<script type="text/javascript">
    require(["dojo/parser", "dijit/form/Button", "dojo/domReady!"],
    function(parser){
        parser.parse();
    });
</script>使用一种编程方法,您可以完全使用JS,并在HTML中只添加一个“占位符”,其中小部件将被钩住/创建。
请注意,HTML中没有数据属性data-dojo-type。
示例:
require(["dijit/form/Button", "dojo/dom", "dojo/domReady!"], function(Button, dom){
    // Create a button programmatically:
    var myButton = new Button({
        label: "Click me!",
        onClick: function(){
            // Do something:
            dom.byId("result1").innerHTML += "Thank you! ";
        }
    }, "progButtonNode").startup();
});
<button id="progButtonNode" type="button"></button>
<div id="result1"></div>在我的个人经验中,我多次看到一种适合简单小部件场景的声明式方法的使用,主要是在HTML中创建的,服务器端脚本添加了“香料”HTML。对于一个更复杂的SPA JavaScript应用程序,一种更程序化的方法。
https://stackoverflow.com/questions/40087597
复制相似问题