2023/9/9总结

nodejs

Node.js 是基于chrome的v8引擎封装,独立执行于JavaScript代码的环境

Node.js环境中没有BOM和DOM

作用:

编写后端程序:提供数据和网页资源等

前端工程化:集成各种开发中使用的工具和技术

fs模块--读写文件

模块:类似于插件,封装了方法/属性

fs模块:封装了于本机文件系统进行交互的,方法/属性

加载  fs  模块对象  const fs = require('fs')

写入文件内容  fs.writeFile('文件路径','文件内容',error=>{})

读取文件内容 fs.readFile('文件路径',(err,data)=>{  //读取后的回调函数,data是文件内容的buffer数据流   })

path 模块  --路径处理

--dirname  内置变量(获取当前模块目录-绝对路径)

path.join()  会使用特定于平台地分隔符,作为定界符,将所有给定地路径片段连接在一起

模块化

定义:CommonJs模块是为Node.js  打包JavaScript 代码的原始方式  Node.js  还支持浏览器和其他JavaScript 运行时使用的ECMAScript  模块标准  在Node.js 中,每个文件都被视为应该单独的模块

  • 概念:项目是由很多个模块文件组成的
  • 好处:提高代码复用性,按需加载,独立作用域
  • 使用:需要标准语法导出和导入进行使用

案例

ECMAScript 标准 -- 默认导出和导入

默认标准使用:

导出   export  default { }

导入   import 变量名 from ‘模块名或者路径’

Node.js默认支持CommonJs标准语法,如果需要使用ECMAScript   标准语法,在运行模块所在文件夹新建package.json文件,并且设置{“type”:"module"}

ECMAScript标准  --  命名导出和导入

命名标准使用

导出  export 修饰定义语句

导入  import {同名变量} from ‘模块名或者路径’

包的概念

包:将模块、代码、其他资料聚合成一个文件夹

  • 项目包:主要用于编写项目和业务逻辑
  • 软件包:封装工具和方法进行使用

根目录中,必须有package.json文件   导入软件包时,引入的默认时index.js 模块文件 / main 属性指定的模块文件

npm 

是Node.js  标准的软件包管理器  它的起初是作为 下载和管理 Node.js  包依赖的方式,现在语句成为前端JavaScript 中使用的工具

  • 初始化清单文件: npm init -y(得到package.json文件,如果有则略过此命令)
  • 下载软件包  : npm i 软件包名称
  • npm --  全局软件包  nodemon

本地软件包  当前项目内使用,封装属性和方法  存在于  node_modules

全局软件包  本机所有项目使用,封装命令和工具,存在于系统设置的位置

nodemon 作用:替代node命令  检测代码更改 自动重启程序

使用

安装  npm i nodemon -g (-g 代表安装到全局环境中)

运行  nodemon 待执行的目标js文件

Vue

watch 侦听器(监视器)

作用:监视数据变化,执行一些业务逻辑或者异步操作

语法:

  • 简单写法  ----> 简单类型数据直接监视
  • 完整写法  ---->添加额外配置项

接口还是有点问题

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .bigBox
        {
            margin-top: 20px;
            display: flex;
        }
        select
        {
            height: 30px;
            width: 60px;
        }
        .left,.right
        {
            height: 100px;
            width: 200px;

        }
        .right
        {
            box-sizing: border-box;

            background: #eee;
            border: 2px solid skyblue;
        }
        .left textarea
        {
            box-sizing: border-box;
            width: 100%;
            height: 100%;
            resize: none;
            outline: none;
            border: 2px solid skyblue;
            padding: 10px;
        }
    </style>
</head>
<body>
<div id="app">
    <select name="language" id="">
        <option value="English">英语</option>
        <option value="Chinese">中文</option>
        <option value="French">法语</option>
    </select>

    <div class="bigBox">
        <div class="left">
            <textarea name="" v-model="words" placeholder="请输入你想翻译的句子"></textarea>
        </div>
        <div class="right">
            {{ translateWords }}
        </div>
    </div>
</div>

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="js/vue.js"></script>
<script>
<!--    接口地址 -->
    const app=new Vue({
        el:'#app',
        data:{
            words:'',
            translateWords:'',
            timer:null
        },
        watch:{
            words(newValue){
                clearTimeout(this.timer)

                this.timer=setTimeout(()=>{
                    axios({
                        url:'https://translate.appworlds.cn',
                        method:'get',
                        contentType:'application/x-www-form-urlencoded',
                        params:{text:this.words,from:'zh-CN',to:'en'}
                    }).then(result=>{
                        this.translateWords=result.data.data;
                        console.log(result)
                    }).catch(error=>{
                        console.log(error)
                        this.translateWords=error.data
                    })
                },1000)
            }
        }
    })
</script>
</body>
</html>

Vue的生命周期

创建   挂载   更新   销毁

工程化开发  脚手架 Vue CLI

Vue CLI  是Vue  官方提供的一个全局命令工具   可以班助我们快速创建 一个开发Vue项目的标准化基础架子(集成了webpack配置)

安装:需要先安装nodejs 以及 nvm

  1. 在windows Power shell  以 管理员的身份打开  
  2. 全局安装:yarn  global add @vue/cli  或者  npm i @vue/cli -g
  3. 安装后
  4. 查看vue 版本 vue --version  (如果没有 显示版本号,说明你安装出了问题)
  5. 创建项目架子  vue create project-name(这里写你想创建的项目名称,不能有中文)
  6. 启动项目 yarn serve  或者  npm run serve

之后会给出一个地址

访问是这样样子

代表你已经安装好了 

把该文件夹用idea打开

组件化开发  根组件

组件化:一个页面可以拆分成一个个组件,每个组件有自己独立的结构、样式、行为  这样就便于维护,利于复用 从而提升开发效率

根组件  整个应用最上层的组件  包裹所有普通小组件,一个根组件App.vue  包含3个部分 

template  结构

style  样式

script  行为

案例:

结果

普通组件的注册使用

组件注册的俩种方式:

局部注册:只能在注册的组件内使用

  • 创建.vue组件(单文件组件)
  • 使用的组件内导入  并局部注册  components:{  组件名:组件对象  }

案例

全局注册:所有的组件都能使用

  • 创建   .vue  文件
  • main.js  中进行全局注册  Vue.component(组件名:组件对象)

案列:

效果:

组件样式冲突 scoped

写在组件中的样式 会全局生效 因此很容易造成  多个组件之间的样式冲突问题

全局样式   默认组件中的样式会作用到全局

局部样式  可以给组件加上scoped 属性 ,这样样式只作用于当前组件 

scoped原理  

当前组件内标签都被添加  data-v-hash的属性    css选择器都被添加   [data-v-hash值]  的属性选择器  

data

data是一个函数  一个组件的data选项必须是一个函数  保证每个组件实例  维护独立的一份数据对象  

案列

组件通信

就是组件与组件之间的数据传递  

父子关系:props  和  $emit

父组件通过props 将数据传递给子组件

案列;

子组件利用 $emit 通知 父组件修改更新

点击之后

props 校验 

为了组件的prop 指定验证要求 不符合要求  控制台就会有错误提示  

  • 类型校验

  • 非空校验
  • 默认值
  • 自定义校验

非父子关系:provide 或者 inject eventbus

eventBus:

案列:

效果:

provide  和  inject

跨层级共享数据  父组件  project 提供数据   子/孙 组件  inject 取值使用

传递的简单数据类型是  非响应式的   复杂数据类型是  响应式的

效果:

通用方案  Vuex

v-model  原理 

等价于 value属性 和input事件的合写  

表单数据的父子组件双向绑定

v-model  简化

 

.sync  修饰符

作用可以实现子组件 与 父组件数据 的双向绑定  简化代码

特点:prop属性名称  可以自定义 非固定 为value   

适用于封装弹窗类的基础组件  visible 属性 true 显示 false隐藏

效果

点击之后

ref 和 $ref

利用  ref  和  $rer  可以用于 获取  dom  元素 或者组件实例

查找范围:当前组件内

效果

Vue 异步更新 、$nextTick

vue语句都是异步的,很多情况下 可能 这条语句没有执行完 就执行 下一句 为了应对这种情况 使用 $nextTick  来解决

效果

 

点击

确定:

自定义指令

自己定义的指令  可以封装 一些dom 操作  扩展功能  

全局注册

局部注册

指令的值

在绑定指令时  可以通过等于号的形式为指令  绑定 具体的参数值

通过binding.value 可以拿到指令值  指令值会触发 update 函数

需要注意的是:

插槽

让组件内部的一些结构 支持自定义

基本语法:

组件内需要定制 的 结构部分 用slot占位   使用时 <组件名></组件名> 标签内部  传入结构替换slot

 案列:

效果:

也可以给插槽设置默认内容  只需要在slot里面写了  没有传递就会用这个默认内容

具名插槽

如果需要多个位置都有自定义的成分,那么可以使用具名插槽。

多个slot使用name属性区分名字   template 配合 v-slot 名字来分发 对应标签

效果:

作用域插槽

定义slot插槽的同时 是可以传值的,给插槽上可以绑定数据 ,将来 使用组件时可以用

给slot标签,以添加属性的方式传值   所有添加的属性 都会被收集到一个对象中  在template 中,通过   `#插槽名=“obj”`  接收 ,默认插槽名为 default

案列:

渲染的界面

删除和查看功能

单页应用程序 

所有功能在一个html 页面上运行

  • 优点 按需更新性能高  开发效率高  用户体验好
  • 缺点  学习成本高  首屏加载慢  不利于SEO

路由

路由是一种映射关系 在Vue中式 路径和组件的映射关系  根据路由就能知道不同路径  然后去匹配渲染哪个组件

安装vue-router插件

打开终端控制台

输入 npm install vue-router@3   //输入3是因为vue2支持的是3xx版本   如果是vue3  就需要下载4xx的版本

安装后 需要 npm run serve 重新打开服务器 

在main.js中

然后页面地址就变了

上面是创建

使用  创建需要使用的组件(推荐放在views目录) 配置路由规则

效果:

点击可以切换下面的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值