当前位置: 首页 > news >正文

构建一个商务网站的步骤有哪些网站不能上传图片

构建一个商务网站的步骤有哪些,网站不能上传图片,吴江手机网站建设价格,域名申请后怎么使用简易版Vue 实现ref功能 ref功能主要是收集依赖和触发依赖的过程。 export class Dep { // 创建一个类#xff0c;使用时使用new Depconstructor(value) { // 初始化可传入一个值this._val value;this.effects new Set(); //收集依赖的容器#xff0c;使用set数据结构}…简易版Vue 实现ref功能 ref功能主要是收集依赖和触发依赖的过程。 export class Dep { // 创建一个类使用时使用new Depconstructor(value) { // 初始化可传入一个值this._val value;this.effects new Set(); //收集依赖的容器使用set数据结构}get value() { //对value值进行拦截获取时收集依赖到effects中this.depend();return this._val;}set value(val) { // 设置的同时触发所有收集到的依赖this._val val;this.notice()}depend() {if (currentEffect) {this.effects.add(currentEffect); //将依赖放入effects中}}notice() {this.effects.forEach( fn { //触发所有收集的依赖fn();})} }let currentEffect null;export function effectWatch(fn) { //收集依赖的函数所有函数必须用这个函数包裹currentEffect fn;fn()currentEffect null; }// index.js const a new Dep(10); let b 0; effectWatch( () {b a.value 10;console.log(b) }) a.value 20;实现reactive功能 reactive主要是让对象也可以进行依赖的收集这就需要为对象的每一个key创建对应的Dep。 const targetsMap new Map(); // 用map数据结构来存储因为它的key可以是对象export function reactive(raw) { //传入的raw是一个对象return new Proxy(raw, { //拦截raw上所有的get和setget(target, key) {let depMap targetsMap.get(raw); // 为每一个raw创建对应的mapif (!depMap) {depMap new Map();targetsMap.set(raw, depMap);}let dep depMap.get(key); // 给raw上的每一个值创建Depif (!dep) {dep new Dep();depMap.set(key, dep);}dep.depend();return Reflect.get(target, key)},set(target, key, value) {let depMap targetsMap.get(raw);if (!depMap) {depMap new Map();targetsMap.set(raw, depMap);}let dep depMap.get(key);if (!dep) {dep new Dep();depMap.set(key, dep);}const result Reflect.set(target, key, value)dep.notice();return result;}}) }//test const user reactive({age: 10 }) let nextAge 0; effectWatch( () {nextAge user.age 1;console.log(nextAge); }) user.age;简易版Vue雏形 使用上面的reactive和effectWatch功能可以实现miniVue的雏形 import { effectWatch, reactive } from ./core/index.js;const App {render(context) {effectWatch(() {document.querySelector(#app).textContent ;const element document.createElement(div);const text document.createTextNode(nihao);const text1 document.createTextNode(context.obj.count);element.append(text);element.append(text1);document.querySelector(#app).append(element)})},setup() {const obj reactive({count: 1})window.obj objreturn{obj}} }App.render(App.setup()) //通过在console中输入obj.count的值修改视图优化 将代码抽离effectWatch在框架中调用视图的清空和append也在框架中调用 export function createApp(rootComponent) {return {mount(rootContainer) {const setupResult rootComponent.setup();effectWatch(() {rootContainer.textContent ;const element rootComponent.render(setupResult);rootContainer.append(element);})}} }export const App {render(context) {const element document.createElement(div);const text document.createTextNode(nihao);const text1 document.createTextNode(context.obj.count);element.append(text);element.append(text1);return element;},setup() {const obj reactive({count: 1})window.obj objreturn {obj}} }优化并使用虚拟Dom 在上面的代码中每次都会更新所有节点需要进行优化只更新变化的节点 将节点关键信息转化成一个对象。props是一个对象代表节点上的attrschildren是一个数组可以有多个 export function h(tag, props, children) {return {tag,props,children} }在App中 import { reactive, h } from ./core/index.js;export const App {render(context) {return h(div, {}, [h(p, {}, nihao), h(p, {}, context.obj.count)])},setup() {const obj reactive({count: 1})window.obj objreturn {obj}} }此时获取的element只是一个对象需要将其映射成真实的Dom 映射真实Dom 依次处理tag props 和children把他们变成真实的节点 function createElement(tag) {return document.createElement(tag); } function patchProps(el, key, prevValue, nextValue) {el.setAttribute(key, nextValue); } export function mountElement(element, root) {const { tag, props, children } element;const el createElement(tag);for (const key in props) {const val props[key];patchProps(el, key, null, val);}if (typeof children string) {const textNode document.createTextNode(children);el.append(textNode)} else if (Array.isArray(children)) {children.forEach((v) {mountElement(v, el)})}root.append(el)}
http://www.eeditor.cn/news/119163/

相关文章:

  • 潍坊网站建设 管雷鸣手机上使用wordpress
  • 申请网站网站綦江建站哪家正规
  • 网站建设英文字体格式网站做点线表格
  • 网站建设指导合同梁志天设计公司项目
  • 广西响应式网站建设不花钱的网页游戏排行
  • 软件ui设计培训学校网络营销渠道优化
  • 坪山附近公司做网站建设哪家技术好可以做营销任务的网站
  • wordpress搭建多个购物网站产品推销方案
  • 所有网站域名都有wordpress用来构建什么
  • 怎么做淘宝客网站和APP网站建设的电话
  • 宁波手机网站建设做网站的项目开发计划书
  • 微网站建设找哪家公司天眼查官网查询入口
  • 自学网站编程江苏最新消息今天
  • 网站搭建联系方式知名做网站
  • 龙岩做网站哪家好seo研究中心晴天
  • 两个网站如何使用一个虚拟主机商场vi设计 知名公司
  • 衡阳电商网站建设国家最新政策
  • 做网站的准备什么软件wordpress如何修改行距
  • 动态做网站网络开发公司简介
  • 哪些网站是php网站自建
  • 南京哪里可以做网站陕西省建设厅网站月报
  • 单位外部网站建设价格吉林省吉林市区号
  • 环保推广哪个网站好网页设计怎么运行
  • 海南平台网站建设企业网页设计师培训宣传语
  • 资阳房产网站建设益阳网站开发
  • 玉林做网站wordpress分类默认模板
  • html5教程 pdf为企业做好服务优化营商环境
  • 网站怎么做支付深圳建站软件
  • 如何建设网站的外链无锡网站建设公司哪家好
  • 高校档案馆网站建设凡科网站怎么建设个人网站