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

php网站开发外文微信营销平台哪个好

php网站开发外文,微信营销平台哪个好,备案号新增网站,深圳做营销网站公司哪家好笔记 关于不同版本的Vue: 1.vue.js与vue.runtime.xxx.js的区别#xff1a;#xff08;1#xff09;vue.js是完整版的Vue,包含#xff1a;核心功能模板解析器#xff08;2#xff09;vue.runtime.xxx.js是运行版本的Vue,只包含核心功能#xff0c;没有模板解析器 2.因为…笔记 关于不同版本的Vue: 1.vue.js与vue.runtime.xxx.js的区别1vue.js是完整版的Vue,包含核心功能模板解析器2vue.runtime.xxx.js是运行版本的Vue,只包含核心功能没有模板解析器 2.因为vue.runtime.xxx.js没有模板解析器所以不能配置template配置项需要使用render函数接收到的createElement函数去指定具体内容ref属性 1.被用来给元素(html元素例如span)或子组件注册引用信息子组件在父级组件中使用id的替代者2.应用在html标签上获取的是真实的DOM元素应用在组件标签上是组件实例对象vc)3.使用方式打标识h1 refxxx/h1或者school/ refxxx/获取this.$refs.xxx配置项props 功能让组件接收外部传过来的数据 1传递数据Student namexxx/(2)接收数据第一种方式只接收props:[name]第二种方式限制类型props:{name:String}第三种方式限制类型限制必要性指定默认值props:{name:{type:String, //类型required:true, //必要性default:nihao //默认值}}备注props是只读的Vue底层会监测你对props的修改如果进行了修改就会发出警告若有业务需求需要修改那么就将props中的内容复制到data中一份然后去修改data中的数据 mixin(混入) 功能可以把多个组件共用的配置提取成一个混入对象 使用方式第一步定义混合例如{data(){}method:{}......}第二步使用混合例如1全局混入Vue.mixin(xxx)(2)局部混入mixins:[xxx]插件 功能用于增强Vue 本质包含install方法的一个对象install的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据 定义插件对象.install function(Vue,options){!-- 1.添加全局过滤器 --Vue.filter(.....)!-- 2.添加全局指令 --Vue.directive(.....)!-- 3.配置全局混入合 --Vue.mixin(.....)!-- 4.添加实例方法 --Vue.prototype.$myMethod function(){....}Vue.prototype.$myProperty xxxx}使用插件Vue.use()scoped样式 作用让样式在局部生效防止冲突 写法style scoped/style 备注使用style属性中的lang可以设置利用什么样式 style langcss/less/style组件化编码步骤通用 1.实现静态组件抽取组件使用组件实现静态页面效果2.展示动态数据2.1数据的类型2.2数据保存在哪个组件3.交互总结todolist案例 1.组件化编码流程 1拆分静态组件组件要按照功能点拆分命名不要与html元素冲突 2实现动态组件考虑好数据的存放位置数据是一个组件在用还是一些组件在用3一个组件在用放在组件自身即可4一些组件在用放在他们共同的父组件上Vue上叫做状态提升 3实现交互从绑定事件开始2.props适用于 1父组件----子组件通信 2子组件----父组件通信要求父组件先给予一个函数3.使用v-model时要切记v-model绑定的值不能是props传过来的值因为props传过来的值不建议修改 4**.props传过来的若是对象类型的值修改对象中的属性时Vue不会报错但是不建议这样做** 浏览器本地存储 1.存储内容大小一般支持5MB左右不同浏览器可能不一样 2.浏览器通过window.localStorage和window.sessionStorage属性来实现本地存储机制 3.相关API 1.xxxxxStorage.setItem(key,value);该方法接受一个键和值作为参数会把键值对添加到存储中如果键名存在则更新其对应的值2.xxxxxStorage.getItem(person);该方法接受一个键和值作为参数返回键名对应的值3.xxxxxStorage.removeItem(key);该方法接受一个键名作为参数把该键名从存储中删除4.xxxxxStorage.clear();该方法会清空存储中所有数据备注1.sessionStorage存储的内容会随着浏览器窗口关闭而消失2.localStorage存储的内容需要手动清除才会消失3.xxxxxStorage.getItem(xxx);如果对应的value获取不到那么getter返回的值是null4.JSON.parse(null)的结果依然是null组件的自定义事件 1.一种组件间的通信的方式适用于子组件—父组件 2.使用场景A是父组件B是子组件B想给A传数据那么就要在A中给B绑定自定义事件事件的回调在A中 3.绑定自定义事件给谁绑定事件就由谁触发事件 1.第一种方式使用自定义事件在父组件中Demo helloupdate /, 或者Demo v-on.hellodemo /this.$emit(hello,参数)然后在methods中定义一个函数update,在demo组件中使其触发hello事件传递参数然后hello事件被触发之后调用app组件中的update组件2.第二种方式使用ref属性在父组件中Demo refdemo /也是在methods中定义一个函数例如getName函数然后写一个mount(){this.$refs.demo.$on(hello,this.getName)}备注1.若想让自定义事件只能触发一次可以使用once修饰符或者$.once方法2.触发自定义事件this.$emit(hello,参数)3.解绑自定义事件this.$off(hello)4.组件上也可以绑定原生DOM事件bang需要使用native修饰符5.注意通过this.$refs.xxx.$on(hello,回调)绑定自定义事件时回调要么配置在methods中要么用箭头函数来表示全局事件总线 1.一种组件间的通信方式可以进行任意组件间进行通信最常见的是适于兄弟组件和爷孙组件之间进行数据传递 2.安装全局事件总线 //在main.js,安装全局事件总线 new Vue({.....beforeCreate(){Vue.prototype.$bus this //安装全局事件总线$bus就是当前应用的vm} })3.使用事件总线 1.接收数据A组件想接收数据则在A组件中给$bus绑定自定义事件事件的回调留在A组件自身!-- 接收数据 --methods(){demo(data){...}}!-- 绑定事件 --mounted(){this.$bus.$on(xxx,this.demo)}2.提供数据在给谁要数据的组件中触发‘xxx’事件this.$bus.$emit(xxx,数据)4.最好在beforeDestory钩子中用$off去解绑当前组件所用到的事件 消息订阅与发布(pubsub) 1.一种组件间通信的方式适用于任意组件间通信 2.使用步骤 1.安装pubsun:npmm i pubsub-js 2.引入import pubsun from pubsub-js 3.接收数据A组件想接收数据则在A组件中订阅消息订阅的回调留在A组件自身 methods(){demo(msgName,data){.....}}mounted(){this.pubId this.pubsub.subscribe(xxx,this,demo) //订阅消息}4.提供数据pubsub.publish(xxx,数据)5.最好早beforeDestory钩子中用pubSub.unsubscribe(this.sunId)去取消订阅nextTick 1.语法this.$nextTick(回调函数) 2.作用在下一次DOM更新结束后执行其指定的回调 3.什么时候用当改变数据后要基于更新后的新DOM进行某些操作时要在nextTick所指定的回调函数中执行 Vue封装的过渡与动画 1.作用在插入更新或者移除DOM元素时再合适的时候黑元素添加样式名 进入 { v-enter 进入起点 v-enter-to 进入终点 v-enter-active 进入的过程 } 离开 { v-leave 离开起点 v-leave-to 离开终点 v-leave-active 离开的过程 } 2.写法 1.准备好样式 1元素进入的样式v-enter :进入的起点离开的终点v-enter-active:进入的过程v-enter-to进入的终点离开的起点2元素离开的样式v-leave :离开的起点v-leave-active:离开的过程v-leave-to离开的终点3.使用transition包裹要过度的元素并配置name属性 transition namehello :appeartrueh1 v-showisShow你好/h1/transition3.如有多个元素需要过度则需要使用transition-group,且每个元素都要指定key值作为唯一的识别 Vue脚手架配置代理服务器 方法一只能配置一个代理服务器在Vue.config.js中添加如下配置devServer:{proxy:http://localhost:5000/ //此处的端口号是另一台服务器的端口号},说明 1.优点配置简单请求资源时直接发给前端8080即可2.缺点不能配置多个代理服务器不能灵活的控制是否走代理3.工作方式若按照上述配置代理当请求了前端不存在的资源时那么请求才会转发给服务器方法二:可以配置多个代理服务器 devServer:{proxy:{/api:{ //匹配所有以/api开头的请求路径target:http://localhost:5000/, //代理目标的基础路径ws:true, //用于支持websocketchangeOrigin:true, //若是false的话当前代理服务器就向被请求的服务器说真实的端口号// 若是true的话当前代理服务器就向被请求的服务器撒谎和被请求的服务器一样的端口号pathRewrite:{^/api:} //用于控制请求头中的host值//匹配所有以/api开头的字符串将他变为空字符串},/demo:{ target:http://localhost:5001/, ws:true, changeOrigin:true, //若是false的话当前代理服务器就向被请求的服务器说真实的端口号// 若是true的话当前代理服务器就向被请求的服务器撒谎和被请求的服务器一样的端口号pathRewrite:{^/demo:} //用于控制请求头中的host值//使代理服务器向服务器发出请求时匹配所有以/api开头的字符串将他变为空字符串},}}插槽 1.作用让父组件可以向子组件位置插入html结构也是一种组件间通信的方 式适用于父组件子组件 2.分类默认插槽具名插槽作用域插槽 3.使用方式 1.默认插槽 父组件中categorydivhtml结构/div/category子组件中templatediv slot插槽默认内容/slot /div/template2.具名插槽 父组件中1.category v-slot:插槽名template divhtml结构/div/temlate/category2.标签 slot插槽名 /标签 子组件中templatedivslot name插槽名默认内容/slot/div/template3.作用域插槽 数据在组件的自身但根据数据生成的结构需要组件的使用者来决定games数据在category组件中但使用数据所遍历出来的结构由App组件决定 数据在子组件中但是html结构在父组件中就要通过子组件给父组件传值的方法 子组件通过v-bind给父组件传递数据然后父组件通过scope{数据名}接收数据 父组件中 template scope{data}或者 scope自己取的名字但是data在他里面divhtlm结构/div /template template scope{data}或者 scope自己取的名字但是data在他里面divhtlm结构2/div /template 子组件中 templateslot :gamesgames默认内容/slot /template scriptexport default{data(){return{games:[王者,蛋仔,超级玛丽,穿越],}},} /scriptVuex 1.vuex是什么 1.概念专门在Vue中实现集中式状态数据管理的一个Vue插件对vue应用中多个组件的共享状态(数据)进行集中式的管理读/写也是一种组件间通信的方式且适用于任意组件间通信 2.什么时候使用Vuex 1.多个组件依赖于同一状态2.来自不同组件的行为事件需要变更同一状态简单来说就是许多组件共享同一数据动态3.搭建vuex环境 将vuex放在store中引入并使用然后main.js中只引入store创建并暴露vuexexport default new Vuex.store{actions,mutations,state,getters}4.组件中读取vuex中的数据{{$store.state.属性名}} 5.组件中修改vuex中的数据 this.$store.dispath(actions中的方法数据) 或者没有业务逻辑时直接写 this.$store.commit(mutations中的方法数据) const actions{方法名(context,val){!-- 业务逻辑,发送请求 --context.commit(mutations中的方法名val)} context中有dispath,commit,state}const mutations{方法名(state,val){ state是vuex中的数据!-- 处理数据 --} }6.getters 相当于computed可以被多个组件使用 const getters{方法名(state){!-- 依靠return来返回值 --return......}}使用{{$store.getters.函数名}} 7.mapState方法用于帮助我们映射state中的数据为计算属性 computed:{!-- 对象写法借助mapState生成计算属性sum,school --...mapState({sum:sum,school:school})!-- 数组写法,借助mapState生成计算属性sum,school注意只有生成的计算属性名字和state中属性的名字一样时才可以用数组写法 --...mapState([sum,school])}8**.mapGetters方法用于帮助我们映射getters中的数据为计算属性** computed:{!-- 对象写法借助mapGetters生成计算属性sum,school --...mapGetters({bigSum:bigSum})!-- 数组写法,借助mapGetters生成计算属性sum,school注意只有生成的计算属性名字和state中属性的名字一样时才可以用数组写法 --...mapGetters([bigSum])}9.mapActions方法:用于帮助我们生成与actions对话的方法,即包含$store.dispatch(xxx)的函数 methods:{!-- 对象写法靠mapActions生成,addSum,subSum --...mapActions({addSum:AddSum,subSum:SubSum})!-- 数组写法 --!-- 生成的函数名与actions中的名字一样则可以使用数组写法 --}10.mapMutations方法:用于帮助我们生成与mutations对话的方法,即包含$store.commit(xxx)的函数(没有逻辑要写可以直接联系mutations) methods:{!-- 对象写法靠mapActions生成,addSum,subSum --...mapMutationss({SingalCount:singalCount,TimeCount:timeCount})!-- 数组写法 --!-- 生成的函数名与actions中的名字一样则可以使用数组写法 --}注意: mapActions与mapMutations使用时,若需要传递参数,要在模板绑定事件时传递好参数,若不传递参数,默认参数为event(事件对象) 路由 vue-router 1.对路由的理解 vue的一个插件库专门用来实现SPA应用 2.对SPA应用的理解 1.单页web应用2.整个应用只有一个完整的页面index.html3.点击页面中的导航链接不会刷新页面只做页面的局部更新4.数据需要通过ajax请求获取3.什么是路由 1.一个路由就是一组映射关系**key-value** 2. **key为路径value可能是function或component** ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f35fe5e9ee9b4f48940da24c7e73ef21.png#pic_center)4.路由的分类 **1.后端路由**1.理解value是function,用于处理客户端提交的请求2.工作过程服务器接收到一个请求时根据请求路径找到匹配的函数来处理请求返回响应数据**2.前端路由**1.理解value是component,用于展示页面内容2.工作过程当浏览器的路径改变时对应的组件就会显示路由的基本使用 1.安装vue-router npm i vue-router32.引入vueRouter,应用插件Vue.use(VueRouter) // 引入vueRouter import VueRouter from vue-router // 应用vue-router Vue.use(VueRouter)3.创建router–index.js编写router配置项 !-- 1.引入VueRouter --import VueRouter from vue-router!-- 2.引入要使用的组件About --import About from ../component/About!-- 3.创建并暴露router实例对象去管理一组一组的路由规则 --export default new VueRouter({routes:[ //路由规则routes是一个数组{path:/about, //路径component:About //当跳转到上述路径时要在页面显示的组件}]})4.实现切换active-class 可配置高亮样式 在组件中使用 router-link to路径About组件router-link/调用路由规则实现指定路由的切换然后将路由规则中路径对应的组件通过router-view/router-view呈现到页面上 !-- 使用router-link指定路由的切换--router-link active-classactive to/aboutAbout组件/router-link//router-view指定组件展示在什么位置router-view/router-view 5.几个注意点 1.**路由组件**通常存放在**pages**文件夹下**一般组件**存放在**components**文件夹下2.**通过切换隐藏了的路由组件默认是被销毁的需要的时候再去挂载**3.**每个组件都有自己的$route属性里面存储着自己的路由信息**4.**整个应用只有一个Router,可以通过组件的$router属性获取到**多级路由(嵌套路由) 配置路由规则使用children配置项在父亲组件中配置children本质是一个数组 routes:[{path:/about,component:About,children:[ //通过children配置子级路由{path:news, //此处一定不要写/多级路由只需写名字即可component:News},{path:message,component:Message},]},]2.跳转要带上父级路由写完整路径 router-link to/About/newsNews/router-link路由的query参数 1.传递参数(两种写法) 假如在message组件中有一组数据messageList 这时要将messageList里的id和title两个属性的值传递给message的子组件detail 使用query传参有两种写法 li v-formessage in messageList :key message.id!-- **第一种写法**跳转路由并携带query参数to的字符串写法 --!-- router-link to/home/message/detail?id${message.id}title${message.title}{{ message.title }}/router-linknbsp;nbsp;/li --!--**第二种写法** 跳转路由并携带query参数to的对象写法 --router-link :to{path:/home/message/detail,query:{id:message.id,title:message.title}}/router-linknbsp;nbsp;/li2.接收参数 接收参数就在子组件之中调用route接收 $route.query.id $route.query.title命名路由 1.作用可以简化路由的跳转 2.如何使用 给index.js中的路由加一个name:名字属性 routes:[{**name:about,** //通过name属性给每个组件配置一个名字path:/about,component:About,children:[ //通过children配置子级路由{**name:news,** // 通过name属性给每个组件配置一个名字path:news, //此处一定不要写/多级路由只需写名字即可component:News},{path:message,component:Message,children:[name:detail,path:detail,component:Detail],},]},]2.简化跳转,要将to写成对象写法 简化前: router-link to路径 /router-link简化后将to写成对象式 router-link :to{name:名字//这里也可以写为原来的 path:/home/message/detail,但是路径太长推荐使用namequery:{id:message.id,title:message.title}}/router-link路由的params参数 1.配置路由声明接收params参数 {path:message,component:Message,children:[{name:detail,**path:detail/:id/:title,** //**使用占位符声明接收params参数**component:Detail}]},2.传递参数 同样也有两种写法 li v-formessage in messageList :key message.id!-- 第一种方法**跳转路由并携带params参数to的字符串写法** --!-- router-link to/home/message/${message.id}/${message.title}{{ message.title }}/router-linknbsp;nbsp;/li --!-- 第二种方法**跳转路由并携带params参数to的对象写法** --!-- **用to的对象写法不能写配置项path只能写name** --router-link :to{name:detail,query:{id:message.id,title:message.title}}/router-linknbsp;nbsp;/li3.接收参数 与query接收参数同理 $route.params.id $route.params.title路由的props配置 作用让路由组件更方便的收到参数 谁接收数据就在谁的路由规则中写配置项props {path:message,component:Message,children:[{name:detail,path:detail/:id/:title,component:Detail,// detail接收数据// props值为函数该函数返回的对象中每一组key-value都会通过props传给Detail组件query与params都适用//props的参数是$route,通过$route可以拿到query或者params里的值props($route){ return {id:$route.params.id, 或者 id:$route.jquery.id, title:$route.params.title 或者 title:$route.jquery.title}}}]},组件中用props配置项接收在模板中使用数值 scriptexport default {name:Detail,props:[id,title],}/scriptrouter-link的replace属性 1.作用控制路由跳转时操作浏览器记录的模式 2.浏览器的历史记录有两种写入方式分别为push和replacepush是追加历史记录replace是替换当前记录路由跳转时默认为push 3.如何开启replace模式router-link replace........./router-link编程式路由导航 当标签不是a标签而是其他的标签如button标签时我们就不能使用router-link实现路由跳转了这时就用到了编程式导航 1.作用不借助实现路由跳转让路由跳转更灵活 2.具体编码 !-- $router的两个API,push与replace --//push是追加历史记录点击返回按钮可以返回上一次的记录this.router.push({//配置项params也可以换成queryname:,params:{ }})//replace是替换上一条记录不能通过返回按钮返回上一次记录this.router.replace({name:,params:{}})其他的API this.$router.back() //后退this.$router.forward() //前进this.$router.go(传入要前进几个或者后进几个的数字)缓存路由组件 1.作用让展示的路由组件保持挂载不被销毁 2.具体编码 keep-alive include要缓存的组件名router-view/router-view/keep-alive两个新的生命周期钩子 1.作用路由组件所独有的两个钩子用于捕获路由组件的激活状态 2.具体名字 **1.actived 路由组件被激活时触发2.deactived 路由组件失活时触发**路由守卫 1.作用对路由进行权限控制 2.分类全局守卫独享守卫组件内守卫 3.全局守卫 全局路由守卫写路由规则外面 给router–index.js需要进行路由守卫的添加 meta:{isAuth:false}用来控制是否要对前来的路由进行检查 给router–index.js所有配置路由规则的路由添加 meta:{title:网页标题名}使用全局后置路由配置网页标题 修改main.js // 全局前置路由守卫---初始化的时候被调用,每次路由切换之前被调用router.beforeEach((to, from, next) {if(to.meta.isAuth){ //控制是否需要鉴权if(localStorage.getItem(school)北京大学 ){next(); //放行}elsealert(学校名不对)}else{next() //放行}});// 全局后置路由守卫---初始化的时候被调用,每次路由切换之后被调用// 设置网页标题 router.afterEach((to,from){document.title to.meta.title ||好运})!-- 最后暴露 --export default router独享路由守卫 独享路由守卫写路由规则里面 {name:news,path:news,component:News,meta:{isAuth:true,title:新闻},// 独享路由守卫beforeEnter:(to,from,next){if(to.meta.isAuth){if(localStorage.getItem(school) 清华大学){next()}else{alert(学校名错误)}}else{next()}}},组件内守卫 组件内守卫包含进入守卫和离开守卫 进入守卫的to与离开守卫的from相同 1.进入守卫通过路由规则进入该组件时被调用* beforeRouteEnter(to,from,next){if(to.meta.isAuth){if(localStorage.getItem(school) 北京大学){next()}else{alert(学校名错误)}}else{next()} },离开守卫 通过路由规则离开该组件时被调用* beforeRouteLeave(to,from,next){next() }路由器的两种工作模式 1.hash模式: 1.对于一个url来说什么是hash值涉及#后面的内容就是hash值 2.hash值不会包含在http请求中即hash不会带给服务器 3.hash模式 地址中永远带着#号不美观 若以后将地址通过第三方收集app分享若app校验严格则地址会被标记为不合法 兼容性好 2.history模式 1.地址干净美观2.兼容性与hash相比略差3. 应用部署上线需要后端人员支持解决刷新页面服务端404的问题总结 1.Vue路由是Vue.js官方提供的一种前端路由管理方式它可以实现单页应用SPA的页面跳转和组件切换提供了一种优雅的方式来管理应用的URL。2.路由的基本概念路由是指根据不同的URL路径展示不同的内容或组件。在Vue中可以通过Vue Router来实现路由功能。3.安装和配置Vue Router首先需要通过npm安装Vue Router然后在Vue项目中引入并使用Vue Router。配置包括定义路由规则、设置默认路由、配置路由参数等。4.路由的基本使用在Vue Router中可以使用router-link组件来生成链接使用router-view组件来展示对应的组件内容。通过配置路由规则可以实现不同路径对应不同的组件。5.动态路由动态路由是指根据不同的参数生成不同的路由。在Vue Router中可以通过在路由路径中使用冒号(:)来定义动态参数并在组件中通过$route.params来获取参数值。6.嵌套路由嵌套路由是指在一个组件中嵌套另一个组件并且这两个组件都有自己的路由。在Vue Router中可以通过配置子路由来实现嵌套路由。7.路由导航守卫路由导航守卫可以在路由切换前后执行一些逻辑。Vue Router提供了多种导航守卫包括全局前置守卫、全局后置守卫、路由独享守卫等。vue2 要想看每一个vue2的详细解释请到我的主页看看吧
文章转载自:
http://www.morning.qkxt.cn.gov.cn.qkxt.cn
http://www.morning.sbqrm.cn.gov.cn.sbqrm.cn
http://www.morning.mngh.cn.gov.cn.mngh.cn
http://www.morning.rfqk.cn.gov.cn.rfqk.cn
http://www.morning.jntdf.cn.gov.cn.jntdf.cn
http://www.morning.mzskr.cn.gov.cn.mzskr.cn
http://www.morning.hxbjt.cn.gov.cn.hxbjt.cn
http://www.morning.djmdk.cn.gov.cn.djmdk.cn
http://www.morning.yqqxj26.cn.gov.cn.yqqxj26.cn
http://www.morning.fgsqz.cn.gov.cn.fgsqz.cn
http://www.morning.bpmnh.cn.gov.cn.bpmnh.cn
http://www.morning.tjmfz.cn.gov.cn.tjmfz.cn
http://www.morning.wdykx.cn.gov.cn.wdykx.cn
http://www.morning.nnpwg.cn.gov.cn.nnpwg.cn
http://www.morning.thmlt.cn.gov.cn.thmlt.cn
http://www.morning.hnzrl.cn.gov.cn.hnzrl.cn
http://www.morning.msxhb.cn.gov.cn.msxhb.cn
http://www.morning.yfcyh.cn.gov.cn.yfcyh.cn
http://www.morning.smyxl.cn.gov.cn.smyxl.cn
http://www.morning.bdwqy.cn.gov.cn.bdwqy.cn
http://www.morning.xjkr.cn.gov.cn.xjkr.cn
http://www.morning.cpwmj.cn.gov.cn.cpwmj.cn
http://www.morning.rkgyx.cn.gov.cn.rkgyx.cn
http://www.morning.zwppm.cn.gov.cn.zwppm.cn
http://www.morning.ldnrf.cn.gov.cn.ldnrf.cn
http://www.morning.rfgc.cn.gov.cn.rfgc.cn
http://www.morning.wqbbc.cn.gov.cn.wqbbc.cn
http://www.morning.xgjhy.cn.gov.cn.xgjhy.cn
http://www.morning.xqqcq.cn.gov.cn.xqqcq.cn
http://www.morning.hghhy.cn.gov.cn.hghhy.cn
http://www.morning.fqqcn.cn.gov.cn.fqqcn.cn
http://www.morning.zbgqt.cn.gov.cn.zbgqt.cn
http://www.morning.dyxlm.cn.gov.cn.dyxlm.cn
http://www.morning.bhxzx.cn.gov.cn.bhxzx.cn
http://www.morning.kxrhj.cn.gov.cn.kxrhj.cn
http://www.morning.bftqc.cn.gov.cn.bftqc.cn
http://www.morning.kxqpm.cn.gov.cn.kxqpm.cn
http://www.morning.gqfks.cn.gov.cn.gqfks.cn
http://www.morning.fbccx.cn.gov.cn.fbccx.cn
http://www.morning.dgckn.cn.gov.cn.dgckn.cn
http://www.morning.ddxjr.cn.gov.cn.ddxjr.cn
http://www.morning.fbmjw.cn.gov.cn.fbmjw.cn
http://www.morning.jqpq.cn.gov.cn.jqpq.cn
http://www.morning.nxstj.cn.gov.cn.nxstj.cn
http://www.morning.pxsn.cn.gov.cn.pxsn.cn
http://www.morning.shxrn.cn.gov.cn.shxrn.cn
http://www.morning.ktmbp.cn.gov.cn.ktmbp.cn
http://www.morning.llxns.cn.gov.cn.llxns.cn
http://www.morning.fkmyq.cn.gov.cn.fkmyq.cn
http://www.morning.bncrx.cn.gov.cn.bncrx.cn
http://www.morning.dmtwz.cn.gov.cn.dmtwz.cn
http://www.morning.sh-wj.com.cn.gov.cn.sh-wj.com.cn
http://www.morning.xlbyx.cn.gov.cn.xlbyx.cn
http://www.morning.lwqst.cn.gov.cn.lwqst.cn
http://www.morning.c7498.cn.gov.cn.c7498.cn
http://www.morning.ppqjh.cn.gov.cn.ppqjh.cn
http://www.morning.mrfgy.cn.gov.cn.mrfgy.cn
http://www.morning.mnkhk.cn.gov.cn.mnkhk.cn
http://www.morning.qlck.cn.gov.cn.qlck.cn
http://www.morning.lwgsk.cn.gov.cn.lwgsk.cn
http://www.morning.bfycr.cn.gov.cn.bfycr.cn
http://www.morning.xlbyx.cn.gov.cn.xlbyx.cn
http://www.morning.bybhj.cn.gov.cn.bybhj.cn
http://www.morning.rjhts.cn.gov.cn.rjhts.cn
http://www.morning.ndnhf.cn.gov.cn.ndnhf.cn
http://www.morning.gkktj.cn.gov.cn.gkktj.cn
http://www.morning.rbmm.cn.gov.cn.rbmm.cn
http://www.morning.trhrk.cn.gov.cn.trhrk.cn
http://www.morning.qqhfc.cn.gov.cn.qqhfc.cn
http://www.morning.yhwmg.cn.gov.cn.yhwmg.cn
http://www.morning.xckrj.cn.gov.cn.xckrj.cn
http://www.morning.xflwq.cn.gov.cn.xflwq.cn
http://www.morning.xfyjn.cn.gov.cn.xfyjn.cn
http://www.morning.qkqzm.cn.gov.cn.qkqzm.cn
http://www.morning.qfkxj.cn.gov.cn.qfkxj.cn
http://www.morning.llxns.cn.gov.cn.llxns.cn
http://www.morning.rrqgf.cn.gov.cn.rrqgf.cn
http://www.morning.crkmm.cn.gov.cn.crkmm.cn
http://www.morning.thlzt.cn.gov.cn.thlzt.cn
http://www.morning.nzmw.cn.gov.cn.nzmw.cn
http://www.tj-hxxt.cn/news/246992.html

相关文章:

  • 中国小康建设网站数字营销经理岗位职责
  • 网站被k后换域名 做301之外_之前发的外链怎么办个人网站如何优化关键词
  • 收费小说网站怎么做八点品牌设计公司招聘
  • 广州网站 制作信科便宜公司展示厅设计
  • 丰都网站建设价格wordpress建视频网站
  • 营销型网站维护多少钱做一个网站需要多少费用
  • 网站推广需求要素网站地图案例
  • 网站设计建设 公司企业所得税优惠政策最新2023上海
  • 成都网站代运营河北省建设机械协会网站首页
  • 做动态文字的网站湖南平台网站建设哪家好
  • 网站托管工作室站长之家网页模板下载
  • 单页面网站源码嘉兴网络建设
  • 贵州网站制作品牌公司营销网站好不好
  • 如何做阿语垂直网站巩义网站优化公司
  • 网站图片快速加载wordpress 新建媒体库
  • 邢台市住房和城乡建设局网站唐山市住房和城乡建设局门户网站
  • 镇江网站建设平台公司官网开发制作
  • 北京建网站公司哪家便宜淄博张店整合网络推广
  • 什么是网站根目录怎么制作古装视频
  • 做网站asp用什么软件咸阳做网站费用
  • 企业网站建设收费wordpress 好用插件
  • 然后建设自营网站jsp网站购买空间
  • 昆山 网站p2p倒闭 网站开发
  • 网站备案现状有源码怎么做app
  • 建设项目环境登记表辽宁省网站python 网站开发书籍
  • 一个不懂技术的人如何做网站创新型的合肥网站建设
  • 连南网站建设电子商务网站建设基础步骤
  • 为什么网站经常被攻击简易个人网页模板
  • 南昌市科协网站泵阀网站建设
  • 宝山网站建设制作网站排名大全