     
     open func routerReloadData(with options: [String: Any], completion handler: YJRCompletionHandler?) {}
     
+    open func routerCanOpen(with options: [String : Any]) -> Bool {
+        return true
+    }
+    
     open func routerOpen() {
         guard let nc = UIViewController.current?.navigationController else {
             self.routerOpenPresent()

                self.nodeCache.setObject(node, forKey: key)
            }
        }
        node.routerOpen()
        dispatch_async_main {
            node.routerReloadData(with: options, completion: handler)

    static func routerCacheIdentifier(with url: String, options: [String: Any]) -> String
    /// 路由器初始化
    static func router(with url: String) -> UIViewController
    /// 路由器能否打开
    func routerCanOpen(with options:[String: Any]) -> Bool
    /// 路由器打开
    func routerOpen()
    /// push失败后，present 打开当前路由
    func routerOpenPresent()
    /// 路由器刷新数据
    func routerReloadData(with options:[String: Any], completion handler: YJRCompletionHandler?)
}

/// URL 路由器
