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 组件布局.组件与 ...
随机推荐
- java 静态代码块 代码块 构造函数 静态成员变量 成员变量的初始化顺序
没有父类的情况 1,静态代码块-->静态成员变量-->成员变量(实例属性)-->代码块-->构造函数 2, 静态代码块 和 静态成员变量 只会初始化一次 有父类的情况 1,父类 ...
- SpringBoot01 InteliJ IDEA安装、Maven配置、创建SpringBoot项目、属性配置、多环境配置
1 InteliJ IDEA 安装 下载地址:点击前往 注意:需要下载专业版本的,注册码在网上随便搜一个就行啦 2 MAVEN工具的安装 2.1 获取安装包 下载地址:点击前往 2.2 安装过程 到官 ...
- 使用docker 解决一个小问题,你也可能用的到
以前一直觉得docker是运维用的工具,或者devops 用的工具,一般人应该用不上,直到最近发现docker 还有另外一个妙用,不管是什么语言. 这几天开会网络特别不好,nodejs npm 仓库 ...
- Java 集合框架之set用法
Java 集合框架之set 一个简单的例子 创建一个Customer类,类中的属性有姓名(name).年龄(age).性别(gender),每个属性分别有get/set 方法.然后创建两个Custom ...
- (转) Redis学习教程--基本命令
原文出自:http://www.cnblogs.com/woshimrf/p/5198361.html 目录 全局操作:1.redis是key-value存储的,放在内存中,并在磁盘持久化的数据结构存 ...
- python + selenium 自动化测试框架
分享一个网站自动化测试框架 结构如下: test_project|--logs|---pages |---register_page.py| |---base_page.py|---test ...
- 推荐使用国内的豆瓣源安装Python插件
以前都是用pip安装Python插件的,直到今天 pip的原理其实是从Python的官方源pypi.python.org/pypi下载到本地,然后解包安装 但是有的时候,这个操作会非常慢,国内可以通过 ...
- 使用Identity Server 4建立Authorization Server (1)
预备知识: http://www.cnblogs.com/cgzl/p/7746496.html 本文内容基本完全来自于Identity Server 4官方文档: https://identitys ...
- coursera无法观看视频解决方法
coursera无法观看视频解决方法 Coursera是国外的一款非常有名的公开课网站,值得大家一起学习,奈何"长城"太厚,经常被和谐,一些视频打不开,最近找到不用FQ的方法,共享 ...
- Windows环境下多线程编程原理与应用读书笔记(4)————线程间通信概述
<一>线程间通信方法 全局变量方式:进程中的线程共享全局变量,可以通过全局变量进行线程间通信. 参数传递法:主线程创建子线程并让子线程为其服务,因此主线程和其他线程可以通过参数传递进行通信 ...