react 体验 react与vue的比较
用了 vue 大半年了,不过我在2016年暑假的时候就看到了 react 这个项目,学习了一番,不过之前学习的都是基础语法和一些基础用法吧,总的来说 mvvm 框架确实都很相似,会一个就可以了;
今天我的配置 react 的时候,搜索过后,发现很多都是一步一步来配置文件的,不过也有好处可以帮助我理解 webpack ,不过这配置也太慢了,如果没存好,还得再来一遍吗?
当然不是,我找到了快速搭建项目的指令:
1.
npm install -g create-react-app
2.
create-react-app [你想要的项目名称]
3.
如果速度太慢的话,可以使用 cnpm;
到这,项目会自动跳出如下提示:
Inside that directory, you can run several commands: npm start
Starts the development server. npm run build
Bundles the app into static files for production. npm test
Starts the test runner. npm run eject
Removes this tool and copies build dependencies, configuration files
and scripts into the app directory. If you do this, you can’t go back! We suggest that you begin by typing: cd grewer
npm start
基本都很清楚了;
文件结构是这样的:
配置到这基本可以了,有点感冒,后面再更
11.21
首先我想说的是 mvvm 框架真的是很相似,我从最基础的结构开始说;
Vue 和 react 的数据都是存在一个data 里,每一个组件都有一个存储的data,如果不用 vuex 和 redux, 这就是唯一的存储的位置,react 提供了一个函数来修改: setState,而 Vue 是直接修改data
再就是指令,这方面 Vue 的有他的指令,比如 v-on:click="clickMe"可以缩写成@click="clickMe" 而且可以快速绑定键位,比如@keyup.enter="submit",就是绑定了回车键 而react 是直接在组件或者 DOM 上写 onClick={this.clickMe}而且在 事件的传值方面也会麻烦一点,比如 onClick={this.deleteRow.bind(this, id)} 这样传递,而 Vue 的话 可以直接传:@click="submit(data)",感觉方便一点;指令虽然都是语法糖,但是用起来还是更爽一点.
Vue和 react 的传值都是通过props 来传递的 (如果没有其他的插件或框架), 这一点都是差不多的;
再就是最重要的组件.Vue 的组件(我这里只讲es6)一般是一个页面一个组件而且有了新的后缀: page.vue, 他的 HTML,js,css 是写在一个页面中的, style 加上 scoped 的指令 就可以实现该页面单独的 css,一般 script 里都是 template包裹,
当我使用react 的组件时还是比较震惊的因为他的自由度确实比较大,首先一个组件可以是一个 function 也可以是一个 class(这里说的不是 css里的class),比如,当前页面有一个组件:
注意从这里开始,代码里的...(省略号)都表示省略部分代码!
class grewer extends React.Component{
constructor(props){
super(props);
this.state = {} }
render(){
return <div>Hello!</div>;
} }
react 的引用组件可以是任何位置的,比如他在当前页面的话:
function LoginButton(props) {
return (
<button onClick={props.onClick}>
Login
</button>
);
} class www extends React.Component {
...
render(){
return <div>Hello!<LoginButton onClick="this.methods" /></div>; } ...
}
可以直接就放在上面了,而如果是其他页面,也可以引用,如:
components.js:
class www extends React.Component {...}; export default www;
index.js(主页面):
import Grewer from './components.js';
然后再 render 里写上
<Grewer />
就可以了;
而且这一个components.js 文件可以写成一个组件引用的块,
在 component.js 里写多个 function 或者 class 通过 export default {qq,ww,ee}
而 index.js 页面
import Grewer from './components.js';
后
可以通过
let Q = Grewer.qq
在 render 里写入:
<Q />
也可以这样 :
<Grewer.qq />;
要注意 vue和 react 都强调组件首字母都要大写;
而且我发现 react 可以引用当前组件里的函数当组件,一般来说组件名称写成小写会被认为是 HTML 元素,
但是我这样写
class www extends React.Component {
...
test=()={...}
render(){
return <div><this.test /></div> }
}
这样是可以成功的,但是我也是感觉怪怪的,首先从规范上来说就是不行的,其次能在当前组件里写出来,为什么不能直接写出来呢,有点多此一举;
这个也只是一项小实验;
然后关于 api ,Vue 确实提供的 api比较多,比如 computed,watch,filters 等等,而 react 就像把函数都放在了 methods 一样,怪不得人们都说 Vue 适合新手,因为他有着规范,某个函数该写在哪里就写在那里,就算水平差,写出来的也还是能看的;
而 react 就不一样了,自由度非常大,正因为这样,也会比较考验使用者的水平;
react 体验 react与vue的比较的更多相关文章
- react router @4 和 vue路由 详解(全)
react router @4 和 vue路由 本文大纲: 1.vue路由基础和使用 2.react-router @4用法 3.什么是包容性路由?什么是排他性路由? 4.react路由有两个重要的属 ...
- 阿里oss上传图片react组件alioss-react,vue组件alioss-vue (不用我先收藏着,后端看下前端处理方法)
1.介绍 最近开发了一个项目,其中需要一个上传图片到阿里云的 oss 上面,就是上传图片到阿里云的 oss 上面. 因为之前开发过 vue 的阿里云 oss 上传,所以直接复制粘 vue 的组件. 因 ...
- React vs Angular vs Vue 2019
React vs Angular vs Vue 看待这三个主流框架给出的想法 Angular is the entire kitchen that gives you all the tools ne ...
- React vs. Angular vs. Vue
原文连接 历史 React是一个用于构建Web应用程序UI组件的JavaScript库. React由Facebook维护,许多领先的科技品牌在其开发环境中使用React. React被Faceboo ...
- 8分钟为你详解React、Angular、Vue三大前端技术
[引言] 当前世界中,技术发展非常迅速并且变化迅速,开发者需要更多的开发工具来解决不同的问题.本文就对于当下主流的前端开发技术React.Vue.Angular这三个框架做个相对详尽的探究,目的是为了 ...
- react router @4 和 vue路由 详解(七)react路由守卫
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 12.react路由守卫? a.在之前的版本中,React Router 也提供了类似的 ...
- 一次掌握 React 与 React Native 两个框架
此系列文章将整合我的 React 视频教程与 React Native 书籍中的精华部分,给大家介绍 React 与 React Native 结合学习的方法. 1. 软件开发语言与框架的学习本质 我 ...
- 重谈react优势——react技术栈回顾
react刚刚推出的时候,讲react优势搜索结果是几十页. 现在,react已经慢慢退火,该用用react技术栈的已经使用上,填过多少坑,加过多少班,血泪控诉也不下千文. 今天,再谈一遍react优 ...
- 《React Native 精解与实战》书籍连载「React 与 React Native 简介」
此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...
随机推荐
- 【源码】canal和otter的高可靠性分析
一般来说,我们对于数据库最主要的要求就是:数据不丢.不管是主从复制,还是使用类似otter+canal这样的数据库同步方案,我们最基本的需求是,在数据不丢失的前提下,尽可能的保证系统的高可用,也就是在 ...
- java多线程编程题之连续打印abc的几种解法
一道编程题如下: 实例化三个线程,一个线程打印a,一个打印b,一个打印c,三个线程同时执行,要求打印出6个连着的abc 题目分析: 通过题意我们可以得出,本题需要我们使用三个线程,三个线程分别会打印6 ...
- win10 uwp 关联文件
有时候应用需要打开后缀名为x的文件,那么如何从文件打开应用? 首先,需要打开 Package.appxmanifest 添加一个功能,需要添加最少有名称,文件类型. 上面的图就是我添加jpg 的方法, ...
- 通过xrdp服务实现windows远程桌面连接树莓派
如题:通过xrdp服务实现windows远程桌面连接树莓派 受同学影响,最近接触到了树莓派,又加上自己技痒想试一下这个小东西究竟能做什么,所以开始了树莓派学习之旅. 正题开始-xrdp实现window ...
- win10 + python3.6 + VSCode + tensorflow-gpu + keras + cuda8 + cuDN6N环境配置
写在前面的话: 再弄这个之前,我对python也好,tensorflow也好几乎是0认知的,所以配置这个环境的时候,走了不少弯路,整整耗费了一个星期的时间才搭配完整这个环境,简直了...然而最气的是, ...
- 案例:AWR手工创建快照失败,SYSAUX表空间剩余不足处理
案例:AWR手工创建快照失败,SYSAUX表空间剩余不足处理 版本:Oracle 11.2.0.4 RAC 问题现象:AWR手工创建快照失败,SYSAUX表空间剩余不足. 1. 查看SYSAUX表空间 ...
- Java boolean类型
有关java boolean类型的定义: The boolean data type has only two possible values: true and false. Use this da ...
- React UI 组件库uiw v1.2.8 发布
uiw 高品质的UI工具包,基于React 16+的组件库.
- Vue源码后记-其余内置指令(2)
-- 指令这个讲起来还有点复杂,先把html弄上来: <body> <div id='app'> <div v-if="vIfIter" v-bind ...
- Windows Nodejs 安装教程
Windows Nodejs 安装教程 1: 访问官方地址 https://nodejs.org/en/download/ 2: 解压压缩包文件到指定目录 我直接把压缩包解压到C盘根目录下,并将文件夹 ...