microsoft / ChakraCore-wiki

A mirror of the ChakraCore wiki to enable pull requests on the Wiki.
https://github.com/Microsoft/ChakraCore/wiki
Other
21 stars 30 forks source link

Documentation Improvements: How to do basic things with ChakraCore #5

Open dilijev opened 8 years ago

dilijev commented 8 years ago

Adapted from internal feedback:

It would have been helpful if there had been a more descriptive documentation explaining about doing basic things using ChakraCore, like how to expose classes to js, how to receive objects from js with the current state, namespaces, how to get/set attributes, how to invoke a js function, and how to export a C++ function to js. We had to dig into the sample projects hosted in the github page to understand how to do things in ChakraCore. A better documentation could have helped and saved time for us.

If this information is already available in a form other than the example projects, we should try to improve the discoverability of that info.


Adding @liminzhu's list of topics to the main post so we get the handy progress meter:

liminzhu commented 8 years ago

NOTE: new edits to the list will be added to the main post instead of to this comment.

Good input. I think I've done all of those in this sample, but some documentation with small code snippets would've been more helpful. I'll look into it when I'm free.

Creating a list of topics,

Edited: Add some stuff per https://github.com/Microsoft/Chakra-Samples/issues/51 @kphillisjr

kphillisjr commented 7 years ago

Might want to add "Embed JavaScript functions in C/C++"... This may not be used very often, but there is cases where the implementation of a function is a lot easier to use JavaScript than it is C/C++.

// This is the toString function defined using JavaScript, 
// but is embedded in C/C++ code.
function toString() {
  return `Point (${this.x}, ${this.y}, ${this.z})`
}
jaredwy commented 7 years ago

Something that would provide a lot of value. Something quiet common is how to wrap a c++ object so it is accessible from js.

Something similar to https://chromium.googlesource.com/v8/v8/+/master/samples/process.cc would be good.

liminzhu commented 7 years ago

Yeah. I think this one (I added "external objects" just now) on my list would help,

Expose native functions / external objects to JavaScript

jaredwy commented 7 years ago

Great :)

dilijev commented 7 years ago

Updated list in the main post so we get the progress meter from the issues page as we complete these items.

jaredwy commented 7 years ago

@dilijev It would be good to call out that the samples should be accessible cross platform as well as just windows. The opengl sample is great, but uses some windows only features.

dilijev commented 7 years ago

@jaredwy -- Makes sense. For the APIs that are xplat-compatible, the samples should be xplat-compatible. But because they are example snippets, they might not compile on their own without setting up a project like the samples do. Short samples in documentation will not be perfect and super easy, but may be possible to copy-paste into an existing project.

For the Windows-only APIs, they'll obviously only work on Windows. There are a few of these.

jaredwy commented 7 years ago

@dilijev Yup. It would be good just to avoid things like JSPointerToString and JsGetPropertyNameFromId even in projects that are windows only and c++. That is what threw me the most. I was using the opengl sample as a guide and ended up being thrown when attempting to compile copy and pasted code :)