最新要闻
- 当前观点:400元档性能天花板!当贝盒子H3S发布:8K HDR、3+32GB存储
- 华为等怎么看?报告称5G网放缓 运营商赔本减少投入:4G更成熟 最新快讯
- 浦城县气象台发布雷电黄色预警信号【2023-05-20】
- 《变形金刚:超能勇士崛起》宣布,说唱歌手GAI周延为说唱盟友
- AMD、NV开打价格战!RX 7600售价曝光:或跟RTX 4060同价甚至更低
- 当前视点!究竟是噱头还是体验升级?18GB大内存手机实测体验
- 今天520:微信已开放520元大红包 限时一天 新消息
- 吸塑是什么材质(吸塑是什么材质)
- 5/19组讯 | 古装虐恋剧《婉婉如梦霄》、电影《高危漏洞》先导片、院线电影《心鼓》等
- 每日速看!剧版《1818黄金眼》开机!网友:谁演紫金陈
- 华为Mate X3为何能做到极致轻薄还可靠?张朝阳物理课揭秘真相|天天关注
- 买新三级能效空调的人为什么多了?原因揭开_当前视点
- 新动态:电池放两周就报废!电车真就这么娇贵?真的
- 电脑微信占用100多GB空间 解决办法来了:重回清爽流畅
- 世人谓我恋长安其实只恋长安某_红衣佳人白衣友 朝与同歌暮与酒 世人谓我恋长安 其实只恋长安某|环球观焦点
- 黑枸杞食用方法视频 黑枸杞食用方法|消息
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
组件化编程
模块与组件
模块
- 向外提供特定功能的js程序-- 一般就是一个js文件
- 作用--复用js、简化js的编写、提高js运行效率
- 模块化--当应用中的js都是以模块来编写的 -- 这个应用就是一个模块化的应用
组件
- 用来实现局部(特定)功能效果的代码集合
- 作用--复用编码 -- 简化项目编码、提高运行效率
- 组件化 -- 当应用中的功能都是以组件来编写的 -- 这个应用就是一个组件化的应用
非单文件组件
一个文件中包含有n个组件
基本使用
定义组件--创建组件
- 使用Vue.extend(options)创建 -- 其中options和new Vue(options)时的区别
- 不写el -- 最终所有组件都要经过一个vm的管理 -- 由vm中的el决定服务哪个容器
- data必须写为函数 -- 避免组件复用时--数据存在引用关系
- 使用template可以配置组件结构
const school = Vue.extend({ template: ` 学校:{{name}}
地址:{{address}}
`, data() { return { name: "郑轻", address: "郑州" } } }); //创建student组件 const student = Vue.extend({ template: ` 姓名:{{name}}
年龄:{{age}}
`, data() { return { name: "lhd", age: 21 } } })
注册组件
(资料图片仅供参考)
- 局部注册 -- 在new Vue时传入components选项
- 全局注册 -- Vue.component("组件名",组件)
//全局注册//创建hello组件const hello = Vue.extend({ template: ` {{msg}}
`, data() { return { msg: "你好" } }});//注册hello组件---全局注册// "hello", hello -- "组件名",创建组件时使用的变量名Vue.component("hello", hello);//局部注册new Vue({ el: "#root", //注册组件--局部 components: { //school: school -- 组件名,创建组件时使用的变量名 // school: school,--前后一致可简写 school, // student: student student }})
使用组件
- 在body标签里写组件标签
注意事项
组件名
- 一个单词组成
- 写法1 -- 首字母小写
- 写法2 -- 首字母大写
- 多个单词组成
- 写法1 -- kebab-case命名
- 写法2 -- CamelCase命名 -- 需要vue脚手架支持
- 组件名尽可能回避HTML中已有的元素名称
- 可使用name配置项指定组件在开发者工具中呈现的名字
const student = Vue.extend({ name: "xuesheng", template: ` 姓名:{{name}}
年龄:{{age}}
`, data() { return { name: "lhd", age: 21 } }})new Vue({ el: "#root", components: { student }})
组件标签
- 写法1 --
- 写法2 --
- 不使用脚手架时 --
会导致后续组件不能渲染
简写方式
const student = Vue.extend(options) -- const student = options
const student = ({ name: "xuesheng", template: ` 姓名:{{name}}
年龄:{{age}}
`, data() { return { name: "lhd", age: 21 } }})
组件嵌套
- school里嵌套student
- 先创建student组件 -- 再创建school组件
- school组件内部 -- 定义components属性
- components内部写入student组件名
- school组件的template内写入student标签
//创建student组件const student = Vue.extend({ template: ` 姓名:{{name}}
年龄:{{age}}
`, data() { return { name: "lhd", age: 21 } }});//创建school组件const school = Vue.extend({ template: ` 学校:{{name}}
地址:{{address}}
//写入student标签 `, data() { return { name: "郑轻", address: "郑州" } }, //写入components属性 components: { student }});
需在vm下创建app组件 -- 管理所有的组件
<script> //创建student组件 const student = Vue.extend({ template: ` 姓名:{{name}}
年龄:{{age}}
`, data() { return { name: "lhd", age: 21 } } }); //创建school组件 const school = Vue.extend({ template: ` 学校:{{name}}
地址:{{address}}
`, data() { return { name: "郑轻", address: "郑州" } }, components: { student } }); //创建hello组件 const hello = Vue.extend({ template: ` {{msg}}
`, data() { return { msg: "你好" } } }); //创建app组件 const app = Vue.extend({ template: `
`, data() { return { msg: "你好" } }, components: { school, hello } }); new Vue({ el: "#root", template: ` `, components: { app } })</script>
VueCpmpotent
以上述代码为例--分析VueCompotent
school组件本质是一个名为VueCompotent的构造函数 -- 是Vue.extend生成的
使用组件时 --只需写组件标签 --Vue解析时会自动创建school组件的实例对象
每次调用Vue.extend -- 都会返回一个新的VueCompotent
关于this指向
组件配置中 -- data中的函数、method中的函数、watch中的函数、computed中的函数 -- this均是VueCompotent实例对象
const school = Vue.extend({ template: ` `, methods: { schoolName() { console.log("school", this); } }});
new Vue(options)配置中 -- data中的函数、method中的函数、watch中的函数、computed中的函数 -- this均是Vue实例对象
VueCompotent可简称为vc
Vue简称为vm
内置关系
- 一个重要的内置关系 -- VueCompotent.prototype._ _proto _ _ = Vue.prototype
- 目的 -- 让vc可以访问到vm原型上的属性和方法
单文件组件
基本结构
组件内部标签
- template --- 写入组件所需结构
学校:{{ name }}
地址:{{ address }}
- script --- 写入组件交互相关内容 --- 通过ES6语法暴露将代码出去
<script>// 组件交互相关的代码--数据、方法等// export default --- ES6语法-向外暴露 -- 简写形式export default { name: "School", data() { return { name: "郑轻", address: "郑州", }; },};/* --不用简写的形式 const School = Vue.extend({ }) export default School */</script>
- style --- 写入组件的样式 --- 没有可不写
app组件内部结构
- template --- 内部写入引入的组件标签
- script --- 引入组件
<script>//引入组件//文件后缀可写可不写import School from "./School.vue";import Student from "./Student.vue";// 组件交互相关的代码--数据、方法等// export default --- ES6语法-向外暴露 -- 简写形式export default { name: "App", components: { School, Student, },};</script>
js内部结构
- 引入app组件
import App from "./App.vue"new Vue({ el: "#root", //该标签可写入html文件下的#root下 tempate:` ` components: { App }})
html内部结构
- 引入js文件
//该标签可写入js文件的vm下 <script src="../../../js/vue.js"></script> <script src="./main.js"></script>
Vue脚手架
简介
- Vue脚手架是Vue官方提供的标准化开发工具
- 最新版本是4
- 文档 -- https://cli.vuejs.org/zh/
具体步骤
全局安装 -- npm install -g @vue/cli -- 安装完后--输入vue --出现下图内容表示安装成功
切换到需要创建vue脚手架的文件夹下 --- 创建脚手架项目
输入提示的命令
点击网址 -- http://localhost:8080/ -- 出现下图页面
内部有vue自动创建的helloword组件
脚手架结构
相关文件
- babel.config.js --- es6转换为es5代码
- package.json、package-lock.json --- nodejs
- README.md --- 对项目进行说明解释 --- 用来写笔记
命令行输入 npm run serve 后
- 自动跳到main.js文件下 --- main.js文件引入了App.vue组件
- 跳转到App.vue --App.vue组件下 引入了Student.vue和School.vue
- 跳转到Student.vue和School.vue文件
- 之后再跳转回main.js文件 -- index.html文件引入了main.js
- 跳转至 index.html --- 就可以输出页面了
不同版本的vue
- vue.js与vue.runtime.xxx.js的区别
- vue.js -- 完整版vue --- 包含核心功能+模板解析器
- vue.runtime.xxx.js -- 运行版vue --- 只包含核心功能 --- 没有模板解析器
- 不能使用template配置项
- 需使用render函数接收到的createElement函数去指定具体内容
//该文件是整个项目的入口文件// 引入vue -- 残缺版vue -- 缺少模板解析器 -- 不能使用template配置项// 解决方法 -- 1、引入完整版vue 2、使用render函数// 完整版vue -- vue/dist/vueimport Vue from "vue"// 引入app组件 -- 是所有组件的父组件import App from "./App.vue"// 关闭vue的生产提示Vue.config.productionTip = false// 创建vue实例new Vue({ // 将app组件放入容器中 /** * render--是一个函数 -- vue自动调用 -- render里传入一个createElement函数--创建具体元素 * createElement("h1","你好") --- 标签名 ,标签里的内容 * render(createElement){ * return createElement("h1","你好") * } * * 简写为箭头函数 * render:(createElement)=>{ * return createElement("h1","你好") * } * render:createElement=> createElement("h1","你好") *render:c=> c("h1","你好") 函数内为组件时--只写一个标签名就行 render: h => h(App) */ render: h => h(App), // 写入容器的id --- 相当于 el:"#app"}).$mount("#app")
修改默认配置
- vue脚手架隐藏了所有webpack相关的配置 -- 查看具体webpack配置
- 执行 vue inspect > output.js --- 查看vue脚手架的默认配置
- vue.config.js--对脚手架进行个性化定制 --- https://cli.vuejs.org/zh
ref属性
- 用来给元素或子组件注册引用信息 --- id的替代者
- 应用在html标签上获取的是真实DOM元素 --- 应用在组件标签上获取的是组件实例对象
使用方式
<script>import School from "./components/School.vue";export default { components: { School }, data() { return { msg: "我在学习Vue", }; }, methods: { showDom() { console.log(this.$refs.title);//真实DOM元素 console.log(this.$refs.btn);//真实DOM元素 console.log(this.$refs.sch);//School组件的实例对象--vc }, },};</script>
props配置
让组件接收外部传来的数据
- 传递数据
//App.vue
- 接收数据
//School.vue//简单接收props: ["name", "age", "sex"],// 限制类型// props: {// name: String,// age: Number,// sex: String,// },//限制类型、必要性、指定默认值props: { name: { type: String, required: true, }, age: { type: Number, default: 21, },},
注意点
props是只读的--Vue底层会监测对props的修改 --- 若进行了修改会发出警告
若一定要修改 --- 复制props的内容到data中 --- 修改data中的数据
mixin混入
把多个组件共用的配置提取成一个混入对象
使用方法
创建一个js文件 -- 定义混合
//将该文件暴露出去export const mix = { methods: { showName() { alert(this.name); }, }}
在需要使用该配置的文件下引入--局部混入
/引入文件import { mix } from "../mix";//通过mixins配置使用 -- 必须写为数组形式mixins: [mix],
全局混入--在main.js文件下引入 -- Vue.mixin(mix)
插件
用于增强Vue
本质 -- 包含install方法的一个对象 --- install的第一个参数是Vue -- 第二个以后的参数是插件使用者传递的数据
定义插件
export default{ install(Vue){ }}
添加全局指令
Vue.prototype.hello=() =>{alert("你好呀")}
使用插件
//main.js//引入插件import plugin from "./plugin";//使用插件Vue.use(plugin);//Student.vuemethods: { demo() { this.hello(); },},
scoped样式
让样式在局部生效 --- 放置冲突
组件化编码流程
拆分静态组件 --- 组件要按功能点拆分,命名不要与html元素冲突
实现动态组件 -- 考虑好数据的存放位置,数据是单个组件用还是多个组件用
- 单个组件用 --- 放在组件自身
- 多个组件用 --- 放在所用组件共同的父组件上 - 状态提升
实现交互 --- 从绑定事件开始
props适用于
- 父组件 --> 子组件 通信
- 子组件 --> 父组件 通信 -- 要求父组件先给子一个函数
- 使用v-model时 -- v-model绑定的值不能是props传过来的值 -- props是不能修改的
- props传过来的值若是对象类型 -- 修改对象中的属性时Vue不会报错 -- 但不推荐
补充--浏览器本地存储
webStrorage
- 存储大小一般支持5MB左右
- 浏览器端通过window.localStorage和window.sessionStorage属性来实现本地存储机制
相关API
- .setItem("key","value") --- 接收一个键和值作为参数 -- 把键值对添加到存储中 --- 若键名存在 -- 更新其对应的值
<script> let person = { name: "wzh", age: 22 }; function saveData() { localStorage.setItem("name", "lhd"); localStorage.setItem("p", JSON.stringify(person)); }</script>
- .getItem("key") --- 接收一个键名作为参数 --- 返回对应的值
function readData() { console.log(localStorage.getItem("name")); const result = localStorage.getItem("p"); console.log(JSON.parse(result));}
- .removeItem("key") --- 接收一个键名作为参数 --- 并把该键名从存储中删除
function deleteData() { localStorage.removeItem("name");}
- .clear() --- 清空存储中所有数据
function clearData() { localStorage.clear();}
注意
- sessionStorage --- 存储的内容会随着浏览器窗口关闭而消失
- localStorage --- 存储的内容需手动清除才能消失
- .getItem("key") --- 若获取不到对应的value -- getItem的返回值为null
- JSON.parse(null) --- 结果依然是null
组件自定义事件
- 一种组件间通信的方式 --- 适用于 子组件给父组件传递数据
- 使用场景 --- 子组件给父组件传递数据---- 要在父组件中给子组件绑定自定义事件 --- 事件的回调在父组件中
- 绑定自定义事件
- 方法一 ---- 通过v-on/@
methods: {getStudentName(name) { console.log("App收到了学生名", name);},//传递多个参数// getStudentName(name, ...params) {// console.log("App收到了学生名", name, params);// },},
- 方法二 ---- 通过ref
mounted() { // 绑定自定义事件this.$refs.student.$on("name", this.getStudentName); // 只能使用一次 // this.$refs.student.$on.once("name", this.getStudentName);},
若想让事件只触发一次 --- 使用once修饰符或$once方法
触发自定义事件
this.$emit("name", this.name);
- 解绑自定义事件
//解绑单个事件this.$off("name");//解绑多个事件this.$off(["name", "demo"]);//解绑全部事件this.$off();
- 组件可绑定原生DOM事件 --- 需使用native修饰符
- 注意
- 通过 ref绑定自定义事件时 --- 回调要么配置在methods中;要么使用箭头函数;否则this指向会出问题 --- 默认this指向的是被绑定自定义事件的组件
全局事件总线
一种组件间通信的方式 --- 适用于任意组件间通信
安装全局事件总线 ---- 在vm的原型上
new Vue({ ... beforeCreate() { Vue.prototype.$bus = this }})
使用事件总线
接收数据--在接收数据的组件中给$bus绑定自定义事件 --- 事件的回调留在该组件本身
//写法一methods: { getStudentName(name) { console.log(name); },},mounted() { this.$bus.$on("stu", this.getStudentName);},写法二mounted() { this.$bus.$on("stu", (name) => { console.log(name); });},
提供数据 --- 在需要获取数据的组件上添加自定义组件
methods: { sendSchoolName(name) { this.$bus.$emit("stu", this.name); },},
最好在beforeDestroy钩子中 --- 用$off解绑当前组件所用到的事件
消息订阅与发布
- 一种组件间通信的方式 --- 适用于任意组件间通信
- 需使用第三方库 ---- pubsub-js
- 在需要接收数据和需要传递数据的组件上引入该库 --- import pubsub from "pubsub-js";
- 接收数据 ---- 接收数据的组件需订阅信息 --- 订阅的回调留在该组件自身
- 最好在beforeDestroy钩子中 ---- 取消订阅
mounted() { this.pubId = pubsub.subscribe("msg", (msgName, data) => { console.log("订阅号msg发布了消息", msgName, data); });},beforeDestroy() { pubsub.unsubscribe(this.pubId);},
- 提供数据 ---- 提供数据的组件需发布信息
methods: { sendSchoolName() { pubsub.publish("msg", "你好呀"); },},
nextTick( )
- 语法 --- this.$nextTick(回调函数)
- 作用 ---- 下次DOM更新结束后执行其指定的回调
- 使用场景 ---- 改变数据后 -- 基于更新后的新DOM进行某些操作时 -- 在nextTick所指定的回调函数中执行
过渡与动画
作用 --- 在插入、更新和移除DOM元素时 --- 在合适的时候给元素添加样式类名
写法
- 元素进入的样式
- v-enter ---- 进入的起点
- v-enter-active ---- 进入的过程
- v-enter-to ---- 进入的终点
// 进入的起点 --- 若transition配置了name属性--则写name的值 --- 若没有配置则写v.hello-enter { transform: translateX(-100%);}// 进入的动画效果 .hello-enter-active { transition: 0.5s linear;}// 进入的终点.hello-enter-to { transform: translateX(0px);}
- 元素离开的样式
- v-leave ---- 进入的起点
- v-leave-active ---- 进入的过程
- v-leave-to ---- 进入的终点
//离开的起点 .hello-leave { transform: translateX(0px);}//离开的动画效果 .hello-leave-active { transition: 0.5s linear;}//离开的终点 .hello-leave-to { transform: translateX(-100%);}
- 使用
包裹要过渡的元素 ---- 并配置name属性
HELLO
- 若有多个元素要进行过渡 --- 使用
,且每个元素都要指定key值
HELLO
你好
关键词:
组件化编程
速看:使用ln命令在Linux系统中创建连接文件
当前观点:400元档性能天花板!当贝盒子H3S发布:8K HDR、3+32GB存储
华为等怎么看?报告称5G网放缓 运营商赔本减少投入:4G更成熟 最新快讯
浦城县气象台发布雷电黄色预警信号【2023-05-20】
《变形金刚:超能勇士崛起》宣布,说唱歌手GAI周延为说唱盟友
AMD、NV开打价格战!RX 7600售价曝光:或跟RTX 4060同价甚至更低
当前视点!究竟是噱头还是体验升级?18GB大内存手机实测体验
今天520:微信已开放520元大红包 限时一天 新消息
吸塑是什么材质(吸塑是什么材质)
5/19组讯 | 古装虐恋剧《婉婉如梦霄》、电影《高危漏洞》先导片、院线电影《心鼓》等
清除ExecutionContext,阻止 AsyncLocal 在异步流、Thread中传递
焦点快播:vulnhub靶场搭建
每日速看!剧版《1818黄金眼》开机!网友:谁演紫金陈
华为Mate X3为何能做到极致轻薄还可靠?张朝阳物理课揭秘真相|天天关注
买新三级能效空调的人为什么多了?原因揭开_当前视点
新动态:电池放两周就报废!电车真就这么娇贵?真的
电脑微信占用100多GB空间 解决办法来了:重回清爽流畅
世人谓我恋长安其实只恋长安某_红衣佳人白衣友 朝与同歌暮与酒 世人谓我恋长安 其实只恋长安某|环球观焦点
黑枸杞食用方法视频 黑枸杞食用方法|消息
欧洲奇树的皮长到15厘米厚 被吉尼斯列为世界上最大与最古老纪念碑
报告称有100多万建筑的纽约正在下沉 自由女神像将半淹没在海水中
《王者荣耀》520皮肤正式开卖 亚瑟-追逃游戏皮肤首周价格为1430点券
端午节三天假期后将连上6天班 多数网友计划出行
福建省发现整窝恐龙蛋及零星恐龙蛋壳碎片 为长形蛋类
环球关注:华利集团接待高毅资产等多家机构调研
《漫长的季节》荣登近5年来评分最高电视剧 导演称看到分数后落泪
北京将遭雷雨大风沙尘轮番袭击 伴有短时强降水和冰雹等
日本北海道一老人在野外湖边钓鱼 被棕熊残忍吃掉
数据显示87%的打工人第一份工作月薪不超过一万 更注重个人发展
雅万高铁实现全线接触网送电 为高铁列车运行提供动能
文心一言 VS 讯飞星火 VS chatgpt (18)-- 算法导论4.1 5题-全球速看
SLAM建图导航信息(仿真)
苹果混合现实设备下月发!光成本就过万了 苹果贴本卖-全球聚焦
每日速递:微软690亿美元收购暴雪又一个障碍扫除 魔兽国服重开有望了?
当前速读:乔迪:浙江队下半场展现风格追平比分 我们还是要找回自信
资讯推荐:3天假期后需连上6天班 端午节出行预定开始了:机票酒店搜索大增
医学生喷《后浪》剧情喷上热搜 官微回应称请拭目以待
每日观察!创远信科接待开源证券股份有限公司等多家机构调研
平板App适配稳了!OPPO、小米等联合通知:App开发者应适配大屏
通用汽车在美召回约66.8万辆汽车 因一部件“涂粉”厚了 环球速看料
蔚来汽车进军可控核聚变 20年内能把聚变商业化?|全球今热点
特斯拉的“营销预算”还真不少 只是没算到账上
10核i7+32GB+双2.5G网口 雷神mini主机到手2999_世界热闻
History(历史)命令用法15例-天天关注
当日快讯:离岸人民币短线拉升涨超100点
天天消息!送走马斯克等于利好?全球最大广告买家摘掉推特“风险”帽
SSD刚想涨价 主控一哥慧荣泼下凉水:最高降价50%去库存
视讯!消息称格力解散手机核心团队 或不再出手机新品:官网已打不开
当前快播:喜大普奔 iPhone可以同步Windows11了
焦点速讯:私家车辆坠河情况紧急!众人义无反顾跳河救人:大赞
iOS视频播放常用重点知识_资讯
国网江苏超高压公司研发应用二次电缆识别仪
中金普洛斯REIT扩募获基金份额持有人大会表决通过 首批REITs扩募再进一步
海外网友热议JDG击败T1:Faker打的太烂 该退役了|全球新资讯
天天看热讯:夏天别急着开空调!这几项准备工作别忘了
全球报道:在美国没有未来!自动驾驶卡车独角兽大裁员:重心将回归国内
RTX 4080与RTX 4090同跑《赛博朋克2077》差距有多大?
天天观速讯丨不止用来玩游戏!知名商用渲染器D5获DLSS 3加持
大源西超百亩地块拍出,6月金融城三期首迎住宅供地!-全球微头条
多态、虚函数表、底层实现、多重继承的问题及处理
天天动态:记录--axios和loading不得不说的故事
MySQL 处理重复数据|全球新视野
登录appuploader
天天热头条丨分享一下mybatisPlus新代码生成器3.5.1以上
【金融街发布】人民银行、外汇局:北京、广东、深圳试点优化跨国公司本外币跨境资金集中运营管理政策 天天视讯
每日精选:北京:近期呼吸道合胞病毒感染患儿激增,儿童出现呼吸困难应立即就医
用了十几年智能机 终于弄懂了手机掉电快原因_每日动态
焦点信息:真是老天爷赏饭吃:女孩特爱哭 被送去唱戏拿了金奖
绿源、五星钻豹等电动车这些批次抽查不合格:车速提示音、整车质量没过关|今日热文
真要来了?法拉第未来:FF 91车型合规认证按计划进行
28年国产武侠游戏IP凉了?《仙剑奇侠传8》被曝未立项
维他奶国际发盈喜 预期年度股东应占溢利3500万港元至5500万港元 天天看点
世界快消息!天翼云CDN全站加速产品对websocket协议的支持
【一步步开发AI运动小程序】三、运动识别处理流程
视讯!第三章:存储与检索
SpringBoot实现WebSocket发送接收消息 + Vue实现SocketJs接收发送消息
创新灵感来源于用户实践,TDengine 首次公开四项专利申请 每日消息
天津网约车从业资格实现线上约考
单风扇就是好看!RTX 40第一次做成ITX迷你卡 5款集中爆发
高颜值87键!影驰Keychron K8 Pro星曜娘联名键盘图赏 全球今头条
深圳一大厦异响振动居民被疏散:官方已启动调查_每日热文
ChatGPT连夜登陆iOS 免费无广告、还支持语音
全球今头条!爱马仕推出AirPods Pro保护皮套:售价7100元 够买5个耳机
【环球聚看点】奥普光电:公司参与了该项目的机械及装校联调工作
Qt+QtWebApp开发笔记(二):http服务器日志系统介绍、添加日志系统至Demo测试
易基因:m5C高甲基化介导EGFR突变的非小细胞肺癌耐药潜在机理
焦点热讯:ipa文件怎么安装到iPhone手机上?
ipa文件怎么安装到iPhone手机上?
聊聊Seata分布式事务解决方案的AT模式_每日观察
科创板收盘播报:科创50指数涨0.52% 次新股表现活跃 全球视讯
欧联杯:塞维利亚胜尤文图斯
当前播报:印度:我们的智能手机取得极大成功!苹果等加大布局 曾称接下来靠他们
曝iPhone 15 Plus影像升级为4800万像素:但因良率问题量产延期 今日最新
全球热点!荣耀90系列屏幕升级:首发3840Hz零风险调光护眼屏
环球速讯:53°飞天遭哄抢 茅台自营电商i茅台用户超4000万:销售230亿
1900万没了!一梅赛德斯AMG ONE运输途中被烧成焦炭:原因未明_热消息
海通国际发布先导智能研报
Lerna 备忘清单_开发速查表分享
CF1512D Corrupted Array 题解 天天观点