Node,React
Node
Node.js 是由 Ryan Dahl 开发的,它最初在 2009 年发布,是一个非浏览器的js运行环境。Node.js 是用多种语言编写的,主要使用 C++ 和 JavaScript。C++ 用于编写 Node.js 的底层系统,比如 V8 JavaScript 引擎(也是用 C++ 编写的,由 Google 开发,用于 Chrome 浏览器)和各种内置模块。JavaScript 用于编写 Node.js 的 API 和其内置库。
Node.js 提供了一个运行时环境,允许在服务器端执行 JavaScript 代码。不同于传统的服务器端语言(如 PHP、Python 或 Ruby),Node.js 专注于非阻塞、事件驱动的架构,使其适合处理大量并发连接,这使得它非常适合构建高性能的网络应用程序。
与 JVM 类似,Node.js 抽象了底层的操作系统差异,并提供了一组统一的 API,使得开发者可以在不同的操作系统上运行相同的代码。但不同于 JVM,Node.js 不运行字节码或特定的中间语言;它直接运行 JavaScript 代码。
npm (Node Package M ...
使用TextField的markedTextRange实现输入框文字限时
常规的两个入口输入框文字限制:
通过监听TextField的UIControl.Event.editingChanged
通过TextField的代理方法,textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
这些方法在中文(预显示拼音)末尾细节处理上都有问题,这里不进行赘述。
办法是通过判断markedTextRange解决:
12345678910111213// 监听 UIControl.Event.editingChanged 事件的action@objc fileprivate func editingChangedAction(_ sender: UITextField) { guard let text = sender.text else { return } if sender.markedTextRange != nil { / ...
iOS开发中的异常记录
Seletor参数崩溃seletor是方法符号,不能带参数。如果指向的方法有参数,方法体里面call这个参数,就会野指针崩溃。正常这种selector方法只能带一个发生者参数。
WKWebView JS监听循环引用[self.configuration.userContentController addScriptMessageHandler:[WeakProxy sf_weakProxy:target] name:@"img_jsm"];
或者
123deinit { webView.configuration.userContentController.removeAllUserScripts()}