<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                <!-- 譯者:Github@wizadforcel --> # Atom中的序列化 # 當一個窗口被刷新,或者從上一次會話恢復的時候,視圖和它相關的對象會從JSON表達式中反序列化,它們在窗口上一次關閉時儲存。要使你自己的視圖和對象兼容刷新,你需要讓它們很好地執行序列化和反序列化。 ## 包的序列化鉤子 ## 你的包的主模塊可以選擇包含一個`serialize`方法,它在你的包反激活之前被調用。你應該返回JSON,它會交還給你作為下次調用`activate`的參數。在下面的例子中,這個包將一個`MyObject`的實例在刷新過程中保持相同的狀態。 ``` module.exports = activate: (state) -> @myObject = if state atom.deserializers.deserialize(state) else new MyObject("Hello") serialize: -> @myObject.serialize() ``` ## 序列化方法 ## ``` class MyObject atom.deserializers.add(this) @deserialize: ({data}) -> new MyObject(data) constructor: (@data) -> serialize: -> { deserializer: 'MyObject', data: @data } ``` ### .serialize() ### 你想要序列化的對象需要實現`.serialize()`,這個方法需要返回一個序列化的對象。而且它必須包含一個叫做`deserializer`的鍵,它的值為一個已注冊的反序列化器的名字,它能夠轉換對象剩余的數據。它通常是類的名稱本身。 ### @deserialize(data) ### 另一方面是`deserialize`方法,它通常是個類級的方法,位于實現`serialize`方法相同的類中。它的作用是將一個上一次`serialize`調用返回的狀態對象轉化為一個真正的對象。 ### atom.deserializers.add(class) ### 你需要在你的類中調用`atom.deserializers.add`方法來使它對反序列化系統可見。現在你可以帶著`serialize`返回的狀態調用全局的`deserialize`方法,你的類中的`deserialize`會自動被選擇。 ## 版本控制 ## ``` class MyObject atom.deserializers.add(this) @version: 2 @deserialize: (state) -> ... serialize: -> { version: @constructor.version, ... } ``` 你的可序列化類可以帶有一個可選的`@version`類級屬性,并且在序列化的狀態中持有`version`鍵。反序列化的時候,Atom只在版本匹配的時候嘗試對其反序列化,否則返回`undefined`。我們計劃在未來實現一個遷移系統,但是現在至少能防止你對舊的狀態反序列化。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看